diff --git a/src/darwin/Framework/CHIP/MTRBaseDevice.mm b/src/darwin/Framework/CHIP/MTRBaseDevice.mm index 25e8908d22b4ae..71e1cde79e86f8 100644 --- a/src/darwin/Framework/CHIP/MTRBaseDevice.mm +++ b/src/darwin/Framework/CHIP/MTRBaseDevice.mm @@ -648,7 +648,6 @@ static CHIP_ERROR MTREncodeTLVFromDataValueDictionary(id object, chip::TLV::TLVW // Callback type to pass data value as an NSObject typedef void (*MTRDataValueDictionaryCallback)(void * context, id value); -typedef void (*MTRErrorCallback)(void * context, CHIP_ERROR error); // Rename to be generic for decode and encode class MTRDataValueDictionaryDecodableType { @@ -689,9 +688,9 @@ CHIP_ERROR Encode(chip::TLV::TLVWriter & writer, chip::TLV::Tag tag) const // Callback bridge for MTRDataValueDictionaryCallback class MTRDataValueDictionaryCallbackBridge : public MTRCallbackBridge { public: - MTRDataValueDictionaryCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, MTRDeviceResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) - : MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive) {}; + MTRDataValueDictionaryCallbackBridge( + dispatch_queue_t queue, MTRDeviceResponseHandler handler, MTRActionBlock action, bool keepAlive = false) + : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive) {}; static void OnSuccessFn(void * context, id value) { DispatchSuccess(context, value); } }; @@ -791,14 +790,9 @@ - (void)readAttributesWithEndpointID:(NSNumber * _Nullable)endpointID clusterID = (clusterID == nil) ? nil : [clusterID copy]; attributeID = (attributeID == nil) ? nil : [attributeID copy]; params = (params == nil) ? nil : [params copy]; - new MTRDataValueDictionaryCallbackBridge(queue, self, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, chip::Callback::Cancelable * success, - chip::Callback::Cancelable * failure) { - auto successFn = chip::Callback::Callback::FromCancelable(success); - auto failureFn = chip::Callback::Callback::FromCancelable(failure); - auto context = successFn->mContext; - auto successCb = successFn->mCall; - auto failureCb = failureFn->mCall; + auto * bridge = new MTRDataValueDictionaryCallbackBridge(queue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, MTRDataValueDictionaryCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { auto resultArray = [[NSMutableArray alloc] init]; auto resultSuccess = [[NSMutableArray alloc] init]; auto resultFailure = [[NSMutableArray alloc] init]; @@ -842,23 +836,23 @@ new MTRDataValueDictionaryCallbackBridge(queue, self, completion, readParams.mAttributePathParamsListSize = 1; readParams.mIsFabricFiltered = params.filterByFabric; - auto onDone = [resultArray, resultSuccess, resultFailure, context, successCb, failureCb]( + auto onDone = [resultArray, resultSuccess, resultFailure, bridge, successCb, failureCb]( BufferedReadAttributeCallback * callback) { if ([resultFailure count] > 0 || [resultSuccess count] == 0) { // Failure if (failureCb) { if ([resultFailure count] > 0) { - failureCb(context, [MTRError errorToCHIPErrorCode:resultFailure[0]]); + failureCb(bridge, [MTRError errorToCHIPErrorCode:resultFailure[0]]); } else if ([resultArray count] > 0) { - failureCb(context, [MTRError errorToCHIPErrorCode:resultArray[0][MTRErrorKey]]); + failureCb(bridge, [MTRError errorToCHIPErrorCode:resultArray[0][MTRErrorKey]]); } else { - failureCb(context, CHIP_ERROR_READ_FAILED); + failureCb(bridge, CHIP_ERROR_READ_FAILED); } } } else { // Success if (successCb) { - successCb(context, resultArray); + successCb(bridge, resultArray); } } chip::Platform::Delete(callback); @@ -887,6 +881,7 @@ new MTRDataValueDictionaryCallbackBridge(queue, self, completion, callback.release(); return err; }); + std::move(*bridge).DispatchAction(self); } - (void)writeAttributeWithEndpointID:(NSNumber *)endpointID @@ -897,14 +892,9 @@ - (void)writeAttributeWithEndpointID:(NSNumber *)endpointID queue:(dispatch_queue_t)queue completion:(MTRDeviceResponseHandler)completion { - new MTRDataValueDictionaryCallbackBridge(queue, self, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, chip::Callback::Cancelable * success, - chip::Callback::Cancelable * failure) { - auto successFn = chip::Callback::Callback::FromCancelable(success); - auto failureFn = chip::Callback::Callback::FromCancelable(failure); - auto context = successFn->mContext; - auto successCb = successFn->mCall; - auto failureCb = failureFn->mCall; + auto * bridge = new MTRDataValueDictionaryCallbackBridge(queue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, MTRDataValueDictionaryCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { auto resultArray = [[NSMutableArray alloc] init]; auto resultSuccess = [[NSMutableArray alloc] init]; auto resultFailure = [[NSMutableArray alloc] init]; @@ -929,22 +919,22 @@ new MTRDataValueDictionaryCallbackBridge(queue, self, completion, }; auto onDoneCb - = [context, successCb, failureCb, resultArray, resultSuccess, resultFailure](app::WriteClient * pWriteClient) { + = [bridge, successCb, failureCb, resultArray, resultSuccess, resultFailure](app::WriteClient * pWriteClient) { if ([resultFailure count] > 0 || [resultSuccess count] == 0) { // Failure if (failureCb) { if ([resultFailure count] > 0) { - failureCb(context, [MTRError errorToCHIPErrorCode:resultFailure[0]]); + failureCb(bridge, [MTRError errorToCHIPErrorCode:resultFailure[0]]); } else if ([resultArray count] > 0) { - failureCb(context, [MTRError errorToCHIPErrorCode:resultArray[0][MTRErrorKey]]); + failureCb(bridge, [MTRError errorToCHIPErrorCode:resultArray[0][MTRErrorKey]]); } else { - failureCb(context, CHIP_ERROR_WRITE_FAILED); + failureCb(bridge, CHIP_ERROR_WRITE_FAILED); } } } else { // Success if (successCb) { - successCb(context, resultArray); + successCb(bridge, resultArray); } } }; @@ -956,6 +946,7 @@ new MTRDataValueDictionaryCallbackBridge(queue, self, completion, onSuccessCb, onFailureCb, (timeoutMs == nil) ? NullOptional : Optional([timeoutMs unsignedShortValue]), onDoneCb, NullOptional); }); + std::move(*bridge).DispatchAction(self); } class NSObjectCommandCallback final : public app::CommandSender::Callback { @@ -1045,14 +1036,9 @@ - (void)invokeCommandWithEndpointID:(NSNumber *)endpointID commandFields = (commandFields == nil) ? nil : [commandFields copy]; timeoutMs = (timeoutMs == nil) ? nil : [timeoutMs copy]; - new MTRDataValueDictionaryCallbackBridge(queue, self, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, chip::Callback::Cancelable * success, - chip::Callback::Cancelable * failure) { - auto successFn = chip::Callback::Callback::FromCancelable(success); - auto failureFn = chip::Callback::Callback::FromCancelable(failure); - auto context = successFn->mContext; - auto successCb = successFn->mCall; - auto failureCb = failureFn->mCall; + auto * bridge = new MTRDataValueDictionaryCallbackBridge(queue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, MTRDataValueDictionaryCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { auto resultArray = [[NSMutableArray alloc] init]; auto resultSuccess = [[NSMutableArray alloc] init]; auto resultFailure = [[NSMutableArray alloc] init]; @@ -1086,21 +1072,21 @@ new MTRDataValueDictionaryCallbackBridge(queue, self, completion, VerifyOrReturnError(decoder != nullptr, CHIP_ERROR_NO_MEMORY); auto rawDecoderPtr = decoder.get(); - auto onDoneCb = [rawDecoderPtr, context, successCb, failureCb, resultArray, resultSuccess, resultFailure]( + auto onDoneCb = [rawDecoderPtr, bridge, successCb, failureCb, resultArray, resultSuccess, resultFailure]( app::CommandSender * commandSender) { if ([resultFailure count] > 0 || [resultSuccess count] == 0) { // Failure if (failureCb) { if ([resultFailure count] > 0) { - failureCb(context, [MTRError errorToCHIPErrorCode:resultFailure[0]]); + failureCb(bridge, [MTRError errorToCHIPErrorCode:resultFailure[0]]); } else { - failureCb(context, CHIP_ERROR_WRITE_FAILED); + failureCb(bridge, CHIP_ERROR_WRITE_FAILED); } } } else { // Success if (successCb) { - successCb(context, resultArray); + successCb(bridge, resultArray); } } chip::Platform::Delete(commandSender); @@ -1121,6 +1107,7 @@ new MTRDataValueDictionaryCallbackBridge(queue, self, completion, commandSender.release(); return CHIP_NO_ERROR; }); + std::move(*bridge).DispatchAction(self); } - (void)subscribeToAttributesWithEndpointID:(NSNumber * _Nullable)endpointID diff --git a/src/darwin/Framework/CHIP/MTRCallbackBridgeBase_internal.h b/src/darwin/Framework/CHIP/MTRCallbackBridgeBase_internal.h index 3ea7d4c0fb8260..56442b07480daa 100644 --- a/src/darwin/Framework/CHIP/MTRCallbackBridgeBase_internal.h +++ b/src/darwin/Framework/CHIP/MTRCallbackBridgeBase_internal.h @@ -32,90 +32,122 @@ * communication with the device in question has been established, as far as we * know. */ +class MTRCallbackBridgeBase { +}; // TODO: ADD NS_ASSUME_NONNULL_BEGIN to this header. When that happens, note // that in MTRActionBlock the two callback pointers are nonnull and the two -// arguments of ResponseHandler are both nullable. +// arguments of MTRResponseHandler are both nullable. -typedef void (^ResponseHandler)(id value, NSError * error); -typedef CHIP_ERROR (^MTRActionBlock)(chip::Messaging::ExchangeManager & exchangeManager, const chip::SessionHandle & session, - chip::Callback::Cancelable * success, chip::Callback::Cancelable * failure); -typedef CHIP_ERROR (^MTRLocalActionBlock)(chip::Callback::Cancelable * success, chip::Callback::Cancelable * failure); -typedef void (*DefaultFailureCallbackType)(void *, CHIP_ERROR); +typedef void (^MTRResponseHandler)(id value, NSError * error); +typedef void (*MTRErrorCallback)(void * context, CHIP_ERROR error); -template class MTRCallbackBridge { +/** + * The bridge will pass itself as the last argument to the action block. + * + * The action block must do one of three things: + * + * 1) Return an error. + * 2) Call the "successCb" callback, with the bridge passed to the block as the + * context, possibly asynchronously. + * 3) Call the "failureCb" callback, with the bridge passed to the block as the + * context, possibly asynchronously. + * + * For an MTRCallbackBridge that has keepAlive set to true, the success/failure + * callbacks may be called multiple times. If keepAlive is false, there must be + * no calls after the first one. + */ +template +using MTRActionBlockT = CHIP_ERROR (^)(chip::Messaging::ExchangeManager & exchangeManager, const chip::SessionHandle & session, + SuccessCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge); +template +using MTRLocalActionBlockT = CHIP_ERROR (^)(SuccessCallback successCb, MTRErrorCallback failureCb); + +template class MTRCallbackBridge : public MTRCallbackBridgeBase { public: + using MTRActionBlock = MTRActionBlockT; + using MTRLocalActionBlock = MTRLocalActionBlockT; + /** - * Run the given MTRLocalActionBlock on the Matter thread, then handle - * converting the value produced by the success callback to the right type - * so it can be passed to a callback of the type we're templated over. - * - * Does not attempt to establish any sessions to devices. Must not be used - * with any action blocks that need a session. + * Construct a callback bridge, which can then have DispatcLocalAction() called + * on it. */ - MTRCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, T OnSuccessFn, bool keepAlive) + MTRCallbackBridge(dispatch_queue_t queue, MTRResponseHandler handler, T OnSuccessFn, bool keepAlive) : mQueue(queue) , mHandler(handler) , mKeepAlive(keepAlive) - , mSuccess(OnSuccessFn, this) - , mFailure(OnFailureFn, this) + , mSuccess(OnSuccessFn) + , mFailure(OnFailureFn) { - LogRequestStart(); - - // For now keep sync dispatch here. - dispatch_sync(chip::DeviceLayer::PlatformMgrImpl().GetWorkQueue(), ^{ - CHIP_ERROR err = action(mSuccess.Cancel(), mFailure.Cancel()); - if (err != CHIP_NO_ERROR) { - NSLog(@"Failure performing action. C++-mangled success callback type: '%s', error: %s", typeid(T).name(), - chip::ErrorStr(err)); - - // Take the normal async error-reporting codepath. This will also - // handle cleaning us up properly. - OnFailureFn(this, err); - } - }); } /** - * Run the given MTRActionBlock on the Matter thread, after getting a CASE - * session (possibly pre-existing) to the given node ID on the fabric - * represented by the given MTRDeviceController. On success, convert the - * success value to whatever type it needs to be to call the callback type - * we're templated over. + * Construct a callback bridge, which can then have DispatchAction() called + * on it. */ - MTRCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, T OnSuccessFn, bool keepAlive) + MTRCallbackBridge(dispatch_queue_t queue, MTRResponseHandler handler, MTRActionBlock action, T OnSuccessFn, bool keepAlive) : mQueue(queue) , mHandler(handler) , mAction(action) , mKeepAlive(keepAlive) - , mSuccess(OnSuccessFn, this) - , mFailure(OnFailureFn, this) + , mSuccess(OnSuccessFn) + , mFailure(OnFailureFn) { - ActionWithNodeID(nodeID, controller); } + /** + * Run the given MTRActionBlock on the Matter thread, after getting a CASE + * session (possibly pre-existing) to the given node ID on the fabric + * represented by the given MTRDeviceController. On success, convert the + * success value to whatever type it needs to be to call the callback type + * we're templated over. Once this function has been called, on a callback + * bridge allocated with `new`, the bridge object must not be accessed by + * the caller. The action block will handle deleting the bridge. + */ + void DispatchAction(chip::NodeId nodeID, MTRDeviceController * controller) && { ActionWithNodeID(nodeID, controller); } + /** * Run the given MTRActionBlock on the Matter thread after getting a secure * session corresponding to the given MTRBaseDevice. On success, convert * the success value to whatever type it needs to be to call the callback - * type we're templated over. + * type we're templated over. Once this function has been called, on a callback + * bridge allocated with `new`, the bridge object must not be accessed by + * the caller. The action block will handle deleting the bridge. */ - MTRCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, T OnSuccessFn, - bool keepAlive) - : mQueue(queue) - , mHandler(handler) - , mAction(action) - , mKeepAlive(keepAlive) - , mSuccess(OnSuccessFn, this) - , mFailure(OnFailureFn, this) + void DispatchAction(MTRBaseDevice * device) && { if (device.isPASEDevice) { ActionWithPASEDevice(device); } else { ActionWithNodeID(device.nodeID, device.deviceController); } - }; + } + + /** + * Run the given MTRLocalActionBlock on the Matter thread, then handle + * converting the value produced by the success callback to the right type + * so it can be passed to a callback of the type we're templated over. + * + * Does not attempt to establish any sessions to devices. Must not be used + * with any action blocks that need a session. + */ + void DispatchLocalAction(MTRLocalActionBlock action) + { + LogRequestStart(); + + // For now keep sync dispatch here. + dispatch_sync(chip::DeviceLayer::PlatformMgrImpl().GetWorkQueue(), ^{ + CHIP_ERROR err = action(mSuccess, mFailure); + if (err != CHIP_NO_ERROR) { + NSLog(@"Failure performing action. C++-mangled success callback type: '%s', error: %s", typeid(T).name(), + chip::ErrorStr(err)); + + // Take the normal async error-reporting codepath. This will also + // handle cleaning us up properly. + OnFailureFn(this, err); + } + }); + } void ActionWithPASEDevice(MTRBaseDevice * device) { @@ -167,7 +199,7 @@ template class MTRCallbackBridge { return; } - CHIP_ERROR err = action(*exchangeManager, session.Value(), mSuccess.Cancel(), mFailure.Cancel()); + CHIP_ERROR err = action(*exchangeManager, session.Value(), mSuccess, mFailure, this); if (err != CHIP_NO_ERROR) { NSLog(@"Failure performing action. C++-mangled success callback type: '%s', error: %s", typeid(T).name(), chip::ErrorStr(err)); @@ -218,12 +250,12 @@ template class MTRCallbackBridge { }); } - ResponseHandler mHandler; + MTRResponseHandler mHandler; MTRActionBlock mAction; bool mKeepAlive; - chip::Callback::Callback mSuccess; - chip::Callback::Callback mFailure; + T mSuccess; + MTRErrorCallback mFailure; // Measure the time it took for the callback to trigger NSDate * mRequestTime; diff --git a/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt b/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt index d3fc38390fe95a..bde911c9d391f1 100644 --- a/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt +++ b/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt @@ -53,8 +53,7 @@ using chip::SessionHandle; { // Make a copy of params before we go async. params = [params copy]; - new MTR{{>callbackName}}CallbackBridge(self.callbackQueue, - self.device, + auto * bridge = new MTR{{>callbackName}}CallbackBridge(self.callbackQueue, {{#if hasSpecificResponse}} {{! This treats completion as taking an id for the data. This is not great from a type-safety perspective, of course. }} @@ -67,7 +66,7 @@ using chip::SessionHandle; completion(error); }, {{/if}} - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, {{>callbackName}}CallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; {{asUpperCamelCase parent.name}}::Commands::{{asUpperCamelCase name}}::Type request; @@ -95,11 +94,10 @@ using chip::SessionHandle; {{/last}} {{/chip_cluster_command_arguments}} - auto successFn = Callback<{{>callbackName}}CallbackType>::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::{{asUpperCamelCase parent.name}}Cluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } {{/chip_cluster_commands}} @@ -117,22 +115,20 @@ using chip::SessionHandle; // Make a copy of params before we go async. params = [params copy]; {{/if_is_fabric_scoped_struct~}} - new MTR{{>attribute_data_callback_name}}CallbackBridge(self.callbackQueue, - self.device, + auto * bridge = new MTR{{>attribute_data_callback_name}}CallbackBridge(self.callbackQueue, {{! This treats completion as taking an id for the data. This is not great from a type-safety perspective, of course. }} completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, {{>attribute_data_callback_name}}Callback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = {{asUpperCamelCase parent.name}}::Attributes::{{asUpperCamelCase name}}::TypeInfo; - auto successFn = Callback<{{>attribute_data_callback_name}}Callback>::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::{{asUpperCamelCase parent.name}}Cluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall + return cppCluster.ReadAttribute(bridge, successCb, failureCb {{~#if_is_fabric_scoped_struct type~}} , params.filterByFabric {{~/if_is_fabric_scoped_struct~}} ); }); + std::move(*bridge).DispatchAction(self.device); } {{#if isWritableAttribute}} @@ -147,15 +143,14 @@ using chip::SessionHandle; params = [params copy]; value = [value copy]; - new MTR{{>callbackName}}CallbackBridge(self.callbackQueue, - self.device, + auto * bridge = new MTR{{>callbackName}}CallbackBridge(self.callbackQueue, {{! For now, don't change the bridge API; instead just use an adapter to invoke our completion handler. This is not great from a type-safety perspective, of course. }} ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, {{>callbackName}}CallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil){ @@ -172,13 +167,11 @@ using chip::SessionHandle; using TypeInfo = {{asUpperCamelCase parent.name}}::Attributes::{{asUpperCamelCase name}}::TypeInfo; TypeInfo::Type cppValue; {{>encode_value target="cppValue" source="value" cluster=parent.name errorCode="return CHIP_ERROR_INVALID_ARGUMENT;" depth=0}} - auto successFn = Callback<{{>callbackName}}CallbackType>::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::{{asUpperCamelCase parent.name}}Cluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); - + std::move(*bridge).DispatchAction(self.device); } {{/if}} @@ -189,36 +182,33 @@ reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value { // Make a copy of params before we go async. params = [params copy]; - __block MTR{{>attribute_data_callback_name}}CallbackSubscriptionBridge * callbackBridge = new MTR{{>attribute_data_callback_name}}CallbackSubscriptionBridge(self.callbackQueue, - self.device, + auto * bridge = new MTR{{>attribute_data_callback_name}}CallbackSubscriptionBridge(self.callbackQueue, {{! This treats reportHandler as taking an id for the data. This is not great from a type-safety perspective, of course. }} reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, {{>attribute_data_callback_name}}Callback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_castattribute_data_callback_name}}CallbackSubscriptionBridge *>(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = {{asUpperCamelCase parent.name}}::Attributes::{{asUpperCamelCase name}}::TypeInfo; - auto successFn = Callback<{{>attribute_data_callback_name}}Callback>::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::{{asUpperCamelCase parent.name}}Cluster cppCluster(exchangeManager, session, self->_endpoint); - MTR{{>attribute_data_callback_name}}CallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], MTR{{>attribute_data_callback_name}}CallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], MTR{{>attribute_data_callback_name}}CallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; } + [typedBridge](void) { delete typedBridge; } ); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void) read{{>attribute}}WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completion { - new MTR{{>attribute_data_callback_name}}CallbackBridge(queue, - completion, - ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTR{{>attribute_data_callback_name}}CallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^({{>attribute_data_callback_name}}Callback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = {{asUpperCamelCase parent.name}}::Attributes::{{asUpperCamelCase name}}::TypeInfo; @@ -227,10 +217,9 @@ reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback<{{>attribute_data_callback_name}}Callback>::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } diff --git a/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt b/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt index 76acf303d10c3e..59e5575e462a10 100644 --- a/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt +++ b/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt @@ -62,8 +62,7 @@ using chip::SessionHandle; MTRAsyncCallbackQueueWorkItem * workItem = [[MTRAsyncCallbackQueueWorkItem alloc] initWithQueue:self.callbackQueue]; MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice *baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTR{{>callbackName}}CallbackBridge(self.callbackQueue, - baseDevice, + auto * bridge = new MTR{{>callbackName}}CallbackBridge(self.callbackQueue, {{#if hasSpecificResponse}} {{! This treats completion as taking an id for the data. This is not great from a type-safety perspective, of course. }} @@ -77,7 +76,7 @@ using chip::SessionHandle; [workItem endWork]; }, {{/if}} - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, {{>callbackName}}CallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; {{asUpperCamelCase parent.name}}::Commands::{{asUpperCamelCase name}}::Type request; @@ -103,11 +102,10 @@ using chip::SessionHandle; {{/last}} {{/chip_cluster_command_arguments}} - auto successFn = Callback<{{>callbackName}}CallbackType>::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::{{asUpperCamelCase parent.name}}Cluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); - }); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); + }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; diff --git a/src/darwin/Framework/CHIP/templates/partials/MTRCallbackBridge.zapt b/src/darwin/Framework/CHIP/templates/partials/MTRCallbackBridge.zapt index 40656f44ce3a0c..1f6b97e9a2b24e 100644 --- a/src/darwin/Framework/CHIP/templates/partials/MTRCallbackBridge.zapt +++ b/src/darwin/Framework/CHIP/templates/partials/MTRCallbackBridge.zapt @@ -13,16 +13,12 @@ class MTR{{> @partial-block}}Bridge : public MTRCallbackBridge<{{>callbackType}}> { public: - MTR{{> @partial-block}}Bridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, bool keepAlive = false) - : MTRCallbackBridge<{{>callbackType}}>(queue, handler, action, OnSuccessFn, keepAlive) - {}; - - MTR{{> @partial-block}}Bridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) - : MTRCallbackBridge<{{>callbackType}}>(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive) + MTR{{> @partial-block}}Bridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) + : MTRCallbackBridge<{{>callbackType}}>(queue, handler, OnSuccessFn, keepAlive) {}; - MTR{{> @partial-block}}Bridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) - : MTRCallbackBridge<{{>callbackType}}>(queue, device, handler, action, OnSuccessFn, keepAlive) + MTR{{> @partial-block}}Bridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) + : MTRCallbackBridge<{{>callbackType}}>(queue, handler, action, OnSuccessFn, keepAlive) {}; static void OnSuccessFn(void * context @@ -46,13 +42,8 @@ public: class MTR{{> @partial-block}}SubscriptionBridge : public MTR{{> @partial-block}}Bridge { public: - MTR{{> @partial-block}}SubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) - : MTR{{> @partial-block}}Bridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTR{{> @partial-block}}SubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) - : MTR{{> @partial-block}}Bridge(queue, device, handler, action, true), + MTR{{> @partial-block}}SubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) + : MTR{{> @partial-block}}Bridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm index 2883c1bde75a46..3ebc20195b0e81 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm @@ -57,12 +57,13 @@ - (void)identifyWithParams:(MTRIdentifyClusterIdentifyParams *)params completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Identify::Commands::Identify::Type request; @@ -73,23 +74,23 @@ new MTRCommandSuccessCallbackBridge( } request.identifyTime = params.identifyTime.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)triggerEffectWithParams:(MTRIdentifyClusterTriggerEffectParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Identify::Commands::TriggerEffect::Type request; @@ -103,23 +104,22 @@ new MTRCommandSuccessCallbackBridge( request.effectVariant = static_cast>(params.effectVariant.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeIdentifyTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Identify::Attributes::IdentifyTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeIdentifyTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -134,12 +134,13 @@ - (void)writeAttributeIdentifyTimeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -151,13 +152,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Identify::Attributes::IdentifyTime::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeIdentifyTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -166,26 +165,25 @@ - (void)subscribeAttributeIdentifyTimeWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Identify::Attributes::IdentifyTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeIdentifyTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -193,7 +191,8 @@ + (void)readAttributeIdentifyTimeWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Identify::Attributes::IdentifyTime::TypeInfo; @@ -202,9 +201,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -214,14 +212,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeIdentifyTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Identify::Attributes::IdentifyType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeIdentifyTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -230,26 +228,25 @@ - (void)subscribeAttributeIdentifyTypeWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Identify::Attributes::IdentifyType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeIdentifyTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -257,7 +254,8 @@ + (void)readAttributeIdentifyTypeWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Identify::Attributes::IdentifyType::TypeInfo; @@ -266,9 +264,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -278,14 +275,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + IdentifyGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = Identify::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -295,27 +293,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Identify::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + IdentifyGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Identify::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -324,8 +322,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIdentifyGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(IdentifyGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Identify::Attributes::GeneratedCommandList::TypeInfo; @@ -334,9 +333,8 @@ new MTRIdentifyGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -346,14 +344,15 @@ new MTRIdentifyGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + IdentifyAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = Identify::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -363,27 +362,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Identify::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + IdentifyAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Identify::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -392,35 +391,36 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = Identify::Attributes::AcceptedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(IdentifyAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = Identify::Attributes::AcceptedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIdentifyAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRIdentifyAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, IdentifyAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Identify::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -429,27 +429,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Identify::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, IdentifyAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Identify::Attributes::AttributeList::TypeInfo; - chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -457,7 +456,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIdentifyAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRIdentifyAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(IdentifyAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Identify::Attributes::AttributeList::TypeInfo; @@ -466,9 +466,8 @@ new MTRIdentifyAttributeListListAttributeCallbackBridge(queue, completion, ^(Can path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -478,14 +477,14 @@ new MTRIdentifyAttributeListListAttributeCallbackBridge(queue, completion, ^(Can - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Identify::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -494,26 +493,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Identify::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -521,7 +519,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Identify::Attributes::FeatureMap::TypeInfo; @@ -530,9 +529,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -542,14 +540,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Identify::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -558,26 +556,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Identify::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -585,7 +582,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Identify::Attributes::ClusterRevision::TypeInfo; @@ -594,9 +592,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -897,8 +894,9 @@ - (void)addGroupWithParams:(MTRGroupsClusterAddGroupParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRGroupsClusterAddGroupResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsClusterAddGroupResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsClusterAddGroupResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::AddGroup::Type request; @@ -910,11 +908,10 @@ new MTRGroupsClusterAddGroupResponseCallbackBridge(self.callbackQueue, self.devi request.groupId = params.groupId.unsignedShortValue; request.groupName = [self asCharSpan:params.groupName]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)viewGroupWithParams:(MTRGroupsClusterViewGroupParams *)params @@ -923,8 +920,9 @@ - (void)viewGroupWithParams:(MTRGroupsClusterViewGroupParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRGroupsClusterViewGroupResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsClusterViewGroupResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsClusterViewGroupResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::ViewGroup::Type request; @@ -935,11 +933,10 @@ new MTRGroupsClusterViewGroupResponseCallbackBridge(self.callbackQueue, self.dev } request.groupId = params.groupId.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)getGroupMembershipWithParams:(MTRGroupsClusterGetGroupMembershipParams *)params @@ -948,8 +945,10 @@ - (void)getGroupMembershipWithParams:(MTRGroupsClusterGetGroupMembershipParams * { // Make a copy of params before we go async. params = [params copy]; - new MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupsClusterGetGroupMembershipResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::GetGroupMembership::Type request; @@ -981,11 +980,10 @@ new MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(self.callbackQueue, } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)removeGroupWithParams:(MTRGroupsClusterRemoveGroupParams *)params @@ -994,8 +992,9 @@ - (void)removeGroupWithParams:(MTRGroupsClusterRemoveGroupParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRGroupsClusterRemoveGroupResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsClusterRemoveGroupResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsClusterRemoveGroupResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::RemoveGroup::Type request; @@ -1006,11 +1005,10 @@ new MTRGroupsClusterRemoveGroupResponseCallbackBridge(self.callbackQueue, self.d } request.groupId = params.groupId.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)removeAllGroupsWithCompletion:(MTRStatusCompletion)completion @@ -1022,12 +1020,13 @@ - (void)removeAllGroupsWithParams:(MTRGroupsClusterRemoveAllGroupsParams * _Null { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::RemoveAllGroups::Type request; @@ -1037,11 +1036,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)addGroupIfIdentifyingWithParams:(MTRGroupsClusterAddGroupIfIdentifyingParams *)params @@ -1049,12 +1047,13 @@ - (void)addGroupIfIdentifyingWithParams:(MTRGroupsClusterAddGroupIfIdentifyingPa { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::AddGroupIfIdentifying::Type request; @@ -1066,23 +1065,22 @@ new MTRCommandSuccessCallbackBridge( request.groupId = params.groupId.unsignedShortValue; request.groupName = [self asCharSpan:params.groupName]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeNameSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Groups::Attributes::NameSupport::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNameSupportWithParams:(MTRSubscribeParams * _Nonnull)params @@ -1091,26 +1089,25 @@ - (void)subscribeAttributeNameSupportWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Groups::Attributes::NameSupport::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -1118,7 +1115,8 @@ + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Groups::Attributes::NameSupport::TypeInfo; @@ -1127,9 +1125,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -1139,14 +1136,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Groups::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -1156,27 +1153,26 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Groups::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Groups::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -1185,35 +1181,36 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupsGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = Groups::Attributes::GeneratedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRGroupsGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GroupsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = Groups::Attributes::GeneratedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Groups::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -1223,27 +1220,26 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Groups::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Groups::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -1252,7 +1248,8 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupsAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(GroupsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Groups::Attributes::AcceptedCommandList::TypeInfo; @@ -1261,9 +1258,8 @@ new MTRGroupsAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -1273,14 +1269,14 @@ new MTRGroupsAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^ - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupsAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Groups::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -1289,27 +1285,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Groups::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Groups::Attributes::AttributeList::TypeInfo; - chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -1317,7 +1312,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupsAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(GroupsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Groups::Attributes::AttributeList::TypeInfo; @@ -1326,9 +1322,8 @@ new MTRGroupsAttributeListListAttributeCallbackBridge(queue, completion, ^(Cance path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -1338,14 +1333,14 @@ new MTRGroupsAttributeListListAttributeCallbackBridge(queue, completion, ^(Cance - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Groups::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -1354,26 +1349,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Groups::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -1381,7 +1375,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Groups::Attributes::FeatureMap::TypeInfo; @@ -1390,9 +1385,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -1402,14 +1396,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Groups::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -1418,26 +1412,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Groups::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -1445,7 +1438,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Groups::Attributes::ClusterRevision::TypeInfo; @@ -1454,9 +1448,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -1742,8 +1735,9 @@ - (void)addSceneWithParams:(MTRScenesClusterAddSceneParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRScenesClusterAddSceneResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterAddSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterAddSceneResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::AddScene::Type request; @@ -1830,11 +1824,10 @@ new MTRScenesClusterAddSceneResponseCallbackBridge(self.callbackQueue, self.devi } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)viewSceneWithParams:(MTRScenesClusterViewSceneParams *)params @@ -1843,8 +1836,9 @@ - (void)viewSceneWithParams:(MTRScenesClusterViewSceneParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRScenesClusterViewSceneResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterViewSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterViewSceneResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::ViewScene::Type request; @@ -1856,11 +1850,10 @@ new MTRScenesClusterViewSceneResponseCallbackBridge(self.callbackQueue, self.dev request.groupId = params.groupId.unsignedShortValue; request.sceneId = params.sceneId.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)removeSceneWithParams:(MTRScenesClusterRemoveSceneParams *)params @@ -1869,8 +1862,9 @@ - (void)removeSceneWithParams:(MTRScenesClusterRemoveSceneParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRScenesClusterRemoveSceneResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterRemoveSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterRemoveSceneResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::RemoveScene::Type request; @@ -1882,11 +1876,10 @@ new MTRScenesClusterRemoveSceneResponseCallbackBridge(self.callbackQueue, self.d request.groupId = params.groupId.unsignedShortValue; request.sceneId = params.sceneId.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)removeAllScenesWithParams:(MTRScenesClusterRemoveAllScenesParams *)params @@ -1895,8 +1888,10 @@ - (void)removeAllScenesWithParams:(MTRScenesClusterRemoveAllScenesParams *)param { // Make a copy of params before we go async. params = [params copy]; - new MTRScenesClusterRemoveAllScenesResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterRemoveAllScenesResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterRemoveAllScenesResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::RemoveAllScenes::Type request; @@ -1907,11 +1902,10 @@ new MTRScenesClusterRemoveAllScenesResponseCallbackBridge(self.callbackQueue, se } request.groupId = params.groupId.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)storeSceneWithParams:(MTRScenesClusterStoreSceneParams *)params @@ -1920,8 +1914,9 @@ - (void)storeSceneWithParams:(MTRScenesClusterStoreSceneParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRScenesClusterStoreSceneResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterStoreSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterStoreSceneResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::StoreScene::Type request; @@ -1933,23 +1928,23 @@ new MTRScenesClusterStoreSceneResponseCallbackBridge(self.callbackQueue, self.de request.groupId = params.groupId.unsignedShortValue; request.sceneId = params.sceneId.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)recallSceneWithParams:(MTRScenesClusterRecallSceneParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::RecallScene::Type request; @@ -1970,11 +1965,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)getSceneMembershipWithParams:(MTRScenesClusterGetSceneMembershipParams *)params @@ -1983,8 +1977,10 @@ - (void)getSceneMembershipWithParams:(MTRScenesClusterGetSceneMembershipParams * { // Make a copy of params before we go async. params = [params copy]; - new MTRScenesClusterGetSceneMembershipResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterGetSceneMembershipResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterGetSceneMembershipResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::GetSceneMembership::Type request; @@ -1995,11 +1991,10 @@ new MTRScenesClusterGetSceneMembershipResponseCallbackBridge(self.callbackQueue, } request.groupId = params.groupId.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)enhancedAddSceneWithParams:(MTRScenesClusterEnhancedAddSceneParams *)params @@ -2008,8 +2003,10 @@ - (void)enhancedAddSceneWithParams:(MTRScenesClusterEnhancedAddSceneParams *)par { // Make a copy of params before we go async. params = [params copy]; - new MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterEnhancedAddSceneResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::EnhancedAddScene::Type request; @@ -2096,11 +2093,10 @@ new MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(self.callbackQueue, s } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)enhancedViewSceneWithParams:(MTRScenesClusterEnhancedViewSceneParams *)params @@ -2109,8 +2105,10 @@ - (void)enhancedViewSceneWithParams:(MTRScenesClusterEnhancedViewSceneParams *)p { // Make a copy of params before we go async. params = [params copy]; - new MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterEnhancedViewSceneResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::EnhancedViewScene::Type request; @@ -2122,11 +2120,10 @@ new MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(self.callbackQueue, request.groupId = params.groupId.unsignedShortValue; request.sceneId = params.sceneId.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)copySceneWithParams:(MTRScenesClusterCopySceneParams *)params @@ -2135,8 +2132,9 @@ - (void)copySceneWithParams:(MTRScenesClusterCopySceneParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRScenesClusterCopySceneResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterCopySceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterCopySceneResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::CopyScene::Type request; @@ -2151,23 +2149,22 @@ new MTRScenesClusterCopySceneResponseCallbackBridge(self.callbackQueue, self.dev request.groupIdTo = params.groupIdTo.unsignedShortValue; request.sceneIdTo = params.sceneIdTo.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeSceneCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Scenes::Attributes::SceneCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSceneCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -2176,26 +2173,25 @@ - (void)subscribeAttributeSceneCountWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Scenes::Attributes::SceneCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSceneCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -2203,7 +2199,8 @@ + (void)readAttributeSceneCountWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Scenes::Attributes::SceneCount::TypeInfo; @@ -2212,9 +2209,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -2224,14 +2220,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeCurrentSceneWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Scenes::Attributes::CurrentScene::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentSceneWithParams:(MTRSubscribeParams * _Nonnull)params @@ -2240,26 +2236,25 @@ - (void)subscribeAttributeCurrentSceneWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Scenes::Attributes::CurrentScene::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentSceneWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -2267,7 +2262,8 @@ + (void)readAttributeCurrentSceneWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Scenes::Attributes::CurrentScene::TypeInfo; @@ -2276,9 +2272,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -2288,14 +2283,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeCurrentGroupWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Scenes::Attributes::CurrentGroup::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentGroupWithParams:(MTRSubscribeParams * _Nonnull)params @@ -2304,26 +2299,25 @@ - (void)subscribeAttributeCurrentGroupWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Scenes::Attributes::CurrentGroup::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentGroupWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -2331,7 +2325,8 @@ + (void)readAttributeCurrentGroupWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Scenes::Attributes::CurrentGroup::TypeInfo; @@ -2340,9 +2335,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -2352,14 +2346,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeSceneValidWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Scenes::Attributes::SceneValid::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSceneValidWithParams:(MTRSubscribeParams * _Nonnull)params @@ -2368,26 +2362,25 @@ - (void)subscribeAttributeSceneValidWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Scenes::Attributes::SceneValid::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSceneValidWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -2395,7 +2388,8 @@ + (void)readAttributeSceneValidWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Scenes::Attributes::SceneValid::TypeInfo; @@ -2404,9 +2398,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -2416,14 +2409,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeNameSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Scenes::Attributes::NameSupport::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNameSupportWithParams:(MTRSubscribeParams * _Nonnull)params @@ -2432,26 +2425,25 @@ - (void)subscribeAttributeNameSupportWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Scenes::Attributes::NameSupport::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -2459,7 +2451,8 @@ + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Scenes::Attributes::NameSupport::TypeInfo; @@ -2468,9 +2461,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -2480,14 +2472,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeLastConfiguredByWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Scenes::Attributes::LastConfiguredBy::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLastConfiguredByWithParams:(MTRSubscribeParams * _Nonnull)params @@ -2496,27 +2488,25 @@ - (void)subscribeAttributeLastConfiguredByWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Scenes::Attributes::LastConfiguredBy::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Scenes::Attributes::LastConfiguredBy::TypeInfo; - chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLastConfiguredByWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -2524,7 +2514,8 @@ + (void)readAttributeLastConfiguredByWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Scenes::Attributes::LastConfiguredBy::TypeInfo; @@ -2533,9 +2524,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -2545,14 +2535,14 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRScenesGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Scenes::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -2562,27 +2552,26 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Scenes::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Scenes::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -2591,35 +2580,36 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRScenesGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = Scenes::Attributes::GeneratedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRScenesGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ScenesGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = Scenes::Attributes::GeneratedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRScenesAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Scenes::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -2629,27 +2619,26 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Scenes::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Scenes::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -2658,7 +2647,8 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRScenesAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ScenesAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Scenes::Attributes::AcceptedCommandList::TypeInfo; @@ -2667,9 +2657,8 @@ new MTRScenesAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -2679,14 +2668,14 @@ new MTRScenesAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^ - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRScenesAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Scenes::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -2695,27 +2684,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRScenesAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRScenesAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Scenes::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRScenesAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Scenes::Attributes::AttributeList::TypeInfo; - chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRScenesAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRScenesAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRScenesAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -2723,7 +2711,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRScenesAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ScenesAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Scenes::Attributes::AttributeList::TypeInfo; @@ -2732,9 +2721,8 @@ new MTRScenesAttributeListListAttributeCallbackBridge(queue, completion, ^(Cance path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -2744,14 +2732,14 @@ new MTRScenesAttributeListListAttributeCallbackBridge(queue, completion, ^(Cance - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Scenes::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -2760,26 +2748,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Scenes::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -2787,7 +2774,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Scenes::Attributes::FeatureMap::TypeInfo; @@ -2796,9 +2784,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -2808,14 +2795,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Scenes::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -2824,26 +2811,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Scenes::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -2851,7 +2837,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Scenes::Attributes::ClusterRevision::TypeInfo; @@ -2860,9 +2847,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -3340,12 +3326,13 @@ - (void)offWithParams:(MTROnOffClusterOffParams * _Nullable)params completion:(M { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::Off::Type request; @@ -3355,11 +3342,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)onWithCompletion:(MTRStatusCompletion)completion @@ -3370,12 +3356,13 @@ - (void)onWithParams:(MTROnOffClusterOnParams * _Nullable)params completion:(MTR { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::On::Type request; @@ -3385,11 +3372,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)toggleWithCompletion:(MTRStatusCompletion)completion @@ -3400,12 +3386,13 @@ - (void)toggleWithParams:(MTROnOffClusterToggleParams * _Nullable)params complet { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::Toggle::Type request; @@ -3415,23 +3402,23 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)offWithEffectWithParams:(MTROnOffClusterOffWithEffectParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::OffWithEffect::Type request; @@ -3444,11 +3431,10 @@ new MTRCommandSuccessCallbackBridge( request.effectVariant = static_cast>(params.effectVariant.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)onWithRecallGlobalSceneWithCompletion:(MTRStatusCompletion)completion @@ -3460,12 +3446,13 @@ - (void)onWithRecallGlobalSceneWithParams:(MTROnOffClusterOnWithRecallGlobalScen { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::OnWithRecallGlobalScene::Type request; @@ -3475,23 +3462,23 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)onWithTimedOffWithParams:(MTROnOffClusterOnWithTimedOffParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::OnWithTimedOff::Type request; @@ -3505,23 +3492,22 @@ new MTRCommandSuccessCallbackBridge( request.onTime = params.onTime.unsignedShortValue; request.offWaitTime = params.offWaitTime.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeOnOffWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOff::Attributes::OnOff::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOnOffWithParams:(MTRSubscribeParams * _Nonnull)params @@ -3530,26 +3516,25 @@ - (void)subscribeAttributeOnOffWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OnOff::Attributes::OnOff::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -3557,7 +3542,8 @@ + (void)readAttributeOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOff::Attributes::OnOff::TypeInfo; @@ -3566,9 +3552,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -3578,14 +3563,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGlobalSceneControlWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOff::Attributes::GlobalSceneControl::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGlobalSceneControlWithParams:(MTRSubscribeParams * _Nonnull)params @@ -3595,26 +3580,25 @@ - (void)subscribeAttributeGlobalSceneControlWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OnOff::Attributes::GlobalSceneControl::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGlobalSceneControlWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -3623,7 +3607,8 @@ + (void)readAttributeGlobalSceneControlWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOff::Attributes::GlobalSceneControl::TypeInfo; @@ -3632,9 +3617,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -3644,14 +3628,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeOnTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOff::Attributes::OnTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOnTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -3666,12 +3650,13 @@ - (void)writeAttributeOnTimeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -3683,13 +3668,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OnOff::Attributes::OnTime::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOnTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -3698,26 +3681,25 @@ - (void)subscribeAttributeOnTimeWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OnOff::Attributes::OnTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOnTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -3725,7 +3707,8 @@ + (void)readAttributeOnTimeWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOff::Attributes::OnTime::TypeInfo; @@ -3734,9 +3717,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -3746,14 +3728,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeOffWaitTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOff::Attributes::OffWaitTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOffWaitTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -3768,12 +3750,13 @@ - (void)writeAttributeOffWaitTimeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -3785,13 +3768,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OnOff::Attributes::OffWaitTime::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOffWaitTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -3800,26 +3781,25 @@ - (void)subscribeAttributeOffWaitTimeWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OnOff::Attributes::OffWaitTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOffWaitTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -3827,7 +3807,8 @@ + (void)readAttributeOffWaitTimeWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOff::Attributes::OffWaitTime::TypeInfo; @@ -3836,9 +3817,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -3848,14 +3828,15 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeStartUpOnOffWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableOnOffClusterOnOffStartUpOnOffAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOff::Attributes::StartUpOnOff::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeStartUpOnOffWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -3870,12 +3851,13 @@ - (void)writeAttributeStartUpOnOffWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -3892,13 +3874,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = static_cast>(value.unsignedCharValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStartUpOnOffWithParams:(MTRSubscribeParams * _Nonnull)params @@ -3907,27 +3887,27 @@ - (void)subscribeAttributeStartUpOnOffWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OnOff::Attributes::StartUpOnOff::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableOnOffClusterOnOffStartUpOnOffAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OnOff::Attributes::StartUpOnOff::TypeInfo; - chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStartUpOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -3935,8 +3915,9 @@ + (void)readAttributeStartUpOnOffWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NullableOnOffClusterOnOffStartUpOnOffAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOff::Attributes::StartUpOnOff::TypeInfo; @@ -3945,9 +3926,8 @@ new MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -3957,14 +3937,14 @@ new MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge( - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OnOffGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOff::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -3974,27 +3954,26 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OnOff::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OnOffGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OnOff::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -4003,7 +3982,8 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(OnOffGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOff::Attributes::GeneratedCommandList::TypeInfo; @@ -4012,9 +3992,8 @@ new MTROnOffGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -4024,14 +4003,14 @@ new MTROnOffGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^ - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, OnOffAcceptedCommandListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOff::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -4041,27 +4020,26 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OnOff::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, OnOffAcceptedCommandListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OnOff::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -4070,7 +4048,8 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(OnOffAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOff::Attributes::AcceptedCommandList::TypeInfo; @@ -4079,9 +4058,8 @@ new MTROnOffAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -4091,14 +4069,14 @@ new MTROnOffAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, OnOffAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOff::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -4107,27 +4085,25 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTROnOffAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROnOffAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OnOff::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROnOffAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, OnOffAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OnOff::Attributes::AttributeList::TypeInfo; - chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROnOffAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROnOffAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROnOffAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -4135,7 +4111,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(OnOffAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOff::Attributes::AttributeList::TypeInfo; @@ -4144,9 +4121,8 @@ new MTROnOffAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancel path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -4156,14 +4132,14 @@ new MTROnOffAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancel - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOff::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -4172,26 +4148,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OnOff::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -4199,7 +4174,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOff::Attributes::FeatureMap::TypeInfo; @@ -4208,9 +4184,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -4220,14 +4195,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOff::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -4236,26 +4211,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OnOff::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -4263,7 +4237,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOff::Attributes::ClusterRevision::TypeInfo; @@ -4272,9 +4247,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -4720,14 +4694,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeSwitchTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSwitchTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -4736,26 +4710,25 @@ - (void)subscribeAttributeSwitchTypeWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSwitchTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -4763,7 +4736,8 @@ + (void)readAttributeSwitchTypeWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchType::TypeInfo; @@ -4772,9 +4746,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -4784,14 +4757,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeSwitchActionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchActions::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeSwitchActionsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -4806,12 +4779,13 @@ - (void)writeAttributeSwitchActionsWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -4823,13 +4797,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchActions::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSwitchActionsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -4838,26 +4810,25 @@ - (void)subscribeAttributeSwitchActionsWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchActions::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSwitchActionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -4865,7 +4836,8 @@ + (void)readAttributeSwitchActionsWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchActions::TypeInfo; @@ -4874,9 +4846,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -4886,14 +4857,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OnOffSwitchConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOffSwitchConfiguration::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -4903,30 +4875,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OnOffSwitchConfiguration::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OnOffSwitchConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OnOffSwitchConfiguration::Attributes::GeneratedCommandList::TypeInfo; + + chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -4935,8 +4905,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OnOffSwitchConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOffSwitchConfiguration::Attributes::GeneratedCommandList::TypeInfo; @@ -4945,10 +4916,8 @@ new MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -4958,14 +4927,15 @@ new MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OnOffSwitchConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOffSwitchConfiguration::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -4975,30 +4945,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OnOffSwitchConfiguration::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OnOffSwitchConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OnOffSwitchConfiguration::Attributes::AcceptedCommandList::TypeInfo; + + chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -5007,8 +4975,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OnOffSwitchConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOffSwitchConfiguration::Attributes::AcceptedCommandList::TypeInfo; @@ -5017,10 +4986,8 @@ new MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -5030,14 +4997,15 @@ new MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OnOffSwitchConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOffSwitchConfiguration::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -5046,28 +5014,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OnOffSwitchConfiguration::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OnOffSwitchConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OnOffSwitchConfiguration::Attributes::AttributeList::TypeInfo; - chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -5075,8 +5043,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OnOffSwitchConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOffSwitchConfiguration::Attributes::AttributeList::TypeInfo; @@ -5085,9 +5054,8 @@ new MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -5097,14 +5065,14 @@ new MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOffSwitchConfiguration::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -5113,26 +5081,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OnOffSwitchConfiguration::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -5140,7 +5107,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOffSwitchConfiguration::Attributes::FeatureMap::TypeInfo; @@ -5149,9 +5117,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -5161,14 +5128,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OnOffSwitchConfiguration::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -5177,26 +5144,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OnOffSwitchConfiguration::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -5204,7 +5170,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OnOffSwitchConfiguration::Attributes::ClusterRevision::TypeInfo; @@ -5213,9 +5180,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -5505,12 +5471,13 @@ - (void)moveToLevelWithParams:(MTRLevelControlClusterMoveToLevelParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::MoveToLevel::Type request; @@ -5529,23 +5496,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveWithParams:(MTRLevelControlClusterMoveParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::Move::Type request; @@ -5564,23 +5531,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stepWithParams:(MTRLevelControlClusterStepParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::Step::Type request; @@ -5600,23 +5567,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stopWithParams:(MTRLevelControlClusterStopParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::Stop::Type request; @@ -5628,11 +5595,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveToLevelWithOnOffWithParams:(MTRLevelControlClusterMoveToLevelWithOnOffParams *)params @@ -5640,12 +5606,13 @@ - (void)moveToLevelWithOnOffWithParams:(MTRLevelControlClusterMoveToLevelWithOnO { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::MoveToLevelWithOnOff::Type request; @@ -5664,23 +5631,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveWithOnOffWithParams:(MTRLevelControlClusterMoveWithOnOffParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::MoveWithOnOff::Type request; @@ -5699,23 +5666,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stepWithOnOffWithParams:(MTRLevelControlClusterStepWithOnOffParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::StepWithOnOff::Type request; @@ -5735,23 +5702,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stopWithOnOffWithParams:(MTRLevelControlClusterStopWithOnOffParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::StopWithOnOff::Type request; @@ -5763,11 +5730,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveToClosestFrequencyWithParams:(MTRLevelControlClusterMoveToClosestFrequencyParams *)params @@ -5775,12 +5741,13 @@ - (void)moveToClosestFrequencyWithParams:(MTRLevelControlClusterMoveToClosestFre { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::MoveToClosestFrequency::Type request; @@ -5791,23 +5758,22 @@ new MTRCommandSuccessCallbackBridge( } request.frequency = params.frequency.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeCurrentLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::CurrentLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentLevelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -5816,27 +5782,25 @@ - (void)subscribeAttributeCurrentLevelWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LevelControl::Attributes::CurrentLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LevelControl::Attributes::CurrentLevel::TypeInfo; - chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -5844,7 +5808,8 @@ + (void)readAttributeCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::CurrentLevel::TypeInfo; @@ -5853,9 +5818,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -5865,14 +5829,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeRemainingTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::RemainingTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRemainingTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -5881,26 +5845,25 @@ - (void)subscribeAttributeRemainingTimeWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LevelControl::Attributes::RemainingTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -5908,7 +5871,8 @@ + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::RemainingTime::TypeInfo; @@ -5917,9 +5881,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -5929,14 +5892,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMinLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::MinLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinLevelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -5945,26 +5908,25 @@ - (void)subscribeAttributeMinLevelWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LevelControl::Attributes::MinLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -5972,7 +5934,8 @@ + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::MinLevel::TypeInfo; @@ -5981,9 +5944,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -5993,14 +5955,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeMaxLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::MaxLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxLevelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -6009,26 +5971,25 @@ - (void)subscribeAttributeMaxLevelWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LevelControl::Attributes::MaxLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -6036,7 +5997,8 @@ + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::MaxLevel::TypeInfo; @@ -6045,9 +6007,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -6057,14 +6018,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeCurrentFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::CurrentFrequency::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentFrequencyWithParams:(MTRSubscribeParams * _Nonnull)params @@ -6073,26 +6034,25 @@ - (void)subscribeAttributeCurrentFrequencyWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LevelControl::Attributes::CurrentFrequency::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -6100,7 +6060,8 @@ + (void)readAttributeCurrentFrequencyWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::CurrentFrequency::TypeInfo; @@ -6109,9 +6070,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -6121,14 +6081,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMinFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::MinFrequency::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinFrequencyWithParams:(MTRSubscribeParams * _Nonnull)params @@ -6137,26 +6097,25 @@ - (void)subscribeAttributeMinFrequencyWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LevelControl::Attributes::MinFrequency::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -6164,7 +6123,8 @@ + (void)readAttributeMinFrequencyWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::MinFrequency::TypeInfo; @@ -6173,9 +6133,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -6185,14 +6144,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMaxFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::MaxFrequency::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxFrequencyWithParams:(MTRSubscribeParams * _Nonnull)params @@ -6201,26 +6160,25 @@ - (void)subscribeAttributeMaxFrequencyWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LevelControl::Attributes::MaxFrequency::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -6228,7 +6186,8 @@ + (void)readAttributeMaxFrequencyWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::MaxFrequency::TypeInfo; @@ -6237,9 +6196,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -6249,14 +6207,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeOptionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::Options::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOptionsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -6271,12 +6229,13 @@ - (void)writeAttributeOptionsWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -6288,13 +6247,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = LevelControl::Attributes::Options::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOptionsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -6303,26 +6260,25 @@ - (void)subscribeAttributeOptionsWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LevelControl::Attributes::Options::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -6330,7 +6286,8 @@ + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::Options::TypeInfo; @@ -6339,9 +6296,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -6351,14 +6307,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeOnOffTransitionTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::OnOffTransitionTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOnOffTransitionTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -6373,12 +6329,13 @@ - (void)writeAttributeOnOffTransitionTimeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -6390,13 +6347,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = LevelControl::Attributes::OnOffTransitionTime::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOnOffTransitionTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -6406,26 +6361,25 @@ - (void)subscribeAttributeOnOffTransitionTimeWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LevelControl::Attributes::OnOffTransitionTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOnOffTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -6434,7 +6388,8 @@ + (void)readAttributeOnOffTransitionTimeWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::OnOffTransitionTime::TypeInfo; @@ -6443,9 +6398,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -6455,14 +6409,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeOnLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::OnLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOnLevelWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -6477,12 +6431,13 @@ - (void)writeAttributeOnLevelWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -6499,13 +6454,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOnLevelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -6514,27 +6467,25 @@ - (void)subscribeAttributeOnLevelWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LevelControl::Attributes::OnLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LevelControl::Attributes::OnLevel::TypeInfo; - chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOnLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -6542,7 +6493,8 @@ + (void)readAttributeOnLevelWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::OnLevel::TypeInfo; @@ -6551,9 +6503,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -6563,14 +6514,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeOnTransitionTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::OnTransitionTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOnTransitionTimeWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -6585,12 +6536,13 @@ - (void)writeAttributeOnTransitionTimeWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -6607,13 +6559,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedShortValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOnTransitionTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -6622,27 +6572,25 @@ - (void)subscribeAttributeOnTransitionTimeWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LevelControl::Attributes::OnTransitionTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LevelControl::Attributes::OnTransitionTime::TypeInfo; - chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOnTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -6650,7 +6598,8 @@ + (void)readAttributeOnTransitionTimeWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::OnTransitionTime::TypeInfo; @@ -6659,9 +6608,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -6671,14 +6619,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeOffTransitionTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::OffTransitionTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOffTransitionTimeWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -6693,12 +6641,13 @@ - (void)writeAttributeOffTransitionTimeWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -6715,13 +6664,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedShortValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOffTransitionTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -6730,27 +6677,25 @@ - (void)subscribeAttributeOffTransitionTimeWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LevelControl::Attributes::OffTransitionTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LevelControl::Attributes::OffTransitionTime::TypeInfo; - chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOffTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -6758,7 +6703,8 @@ + (void)readAttributeOffTransitionTimeWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::OffTransitionTime::TypeInfo; @@ -6767,9 +6713,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -6779,14 +6724,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeDefaultMoveRateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::DefaultMoveRate::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeDefaultMoveRateWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -6801,12 +6746,13 @@ - (void)writeAttributeDefaultMoveRateWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -6823,13 +6769,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDefaultMoveRateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -6838,27 +6782,25 @@ - (void)subscribeAttributeDefaultMoveRateWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LevelControl::Attributes::DefaultMoveRate::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LevelControl::Attributes::DefaultMoveRate::TypeInfo; - chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDefaultMoveRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -6866,7 +6808,8 @@ + (void)readAttributeDefaultMoveRateWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::DefaultMoveRate::TypeInfo; @@ -6875,9 +6818,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -6887,14 +6829,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeStartUpCurrentLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::StartUpCurrentLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeStartUpCurrentLevelWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -6909,12 +6851,13 @@ - (void)writeAttributeStartUpCurrentLevelWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -6931,13 +6874,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStartUpCurrentLevelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -6947,27 +6888,25 @@ - (void)subscribeAttributeStartUpCurrentLevelWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LevelControl::Attributes::StartUpCurrentLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LevelControl::Attributes::StartUpCurrentLevel::TypeInfo; - chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStartUpCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -6976,7 +6915,8 @@ + (void)readAttributeStartUpCurrentLevelWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::StartUpCurrentLevel::TypeInfo; @@ -6985,9 +6925,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -6997,14 +6936,15 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LevelControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -7014,27 +6954,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LevelControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LevelControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LevelControl::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -7043,8 +6983,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLevelControlGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(LevelControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::GeneratedCommandList::TypeInfo; @@ -7053,9 +6994,8 @@ new MTRLevelControlGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -7065,14 +7005,15 @@ new MTRLevelControlGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LevelControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -7082,27 +7023,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LevelControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LevelControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LevelControl::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -7111,8 +7052,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLevelControlAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(LevelControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::AcceptedCommandList::TypeInfo; @@ -7121,9 +7063,8 @@ new MTRLevelControlAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -7133,14 +7074,14 @@ new MTRLevelControlAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLevelControlAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLevelControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LevelControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -7149,27 +7090,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LevelControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LevelControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LevelControl::Attributes::AttributeList::TypeInfo; - chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -7177,7 +7117,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLevelControlAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLevelControlAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(LevelControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::AttributeList::TypeInfo; @@ -7186,9 +7127,8 @@ new MTRLevelControlAttributeListListAttributeCallbackBridge(queue, completion, ^ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -7198,14 +7138,14 @@ new MTRLevelControlAttributeListListAttributeCallbackBridge(queue, completion, ^ - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -7214,26 +7154,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LevelControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -7241,7 +7180,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::FeatureMap::TypeInfo; @@ -7250,9 +7190,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -7262,14 +7201,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LevelControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -7278,26 +7217,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LevelControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -7305,7 +7243,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LevelControl::Attributes::ClusterRevision::TypeInfo; @@ -7314,9 +7253,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -8122,14 +8060,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeActiveTextWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::ActiveText::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeActiveTextWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -8144,12 +8082,13 @@ - (void)writeAttributeActiveTextWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -8161,13 +8100,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BinaryInputBasic::Attributes::ActiveText::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveTextWithParams:(MTRSubscribeParams * _Nonnull)params @@ -8176,27 +8113,25 @@ - (void)subscribeAttributeActiveTextWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BinaryInputBasic::Attributes::ActiveText::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BinaryInputBasic::Attributes::ActiveText::TypeInfo; - chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -8204,7 +8139,8 @@ + (void)readAttributeActiveTextWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::ActiveText::TypeInfo; @@ -8213,9 +8149,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -8225,14 +8160,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeDescriptionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::Description::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeDescriptionWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -8247,12 +8182,13 @@ - (void)writeAttributeDescriptionWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -8264,13 +8200,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BinaryInputBasic::Attributes::Description::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -8279,27 +8213,25 @@ - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BinaryInputBasic::Attributes::Description::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BinaryInputBasic::Attributes::Description::TypeInfo; - chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -8307,7 +8239,8 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::Description::TypeInfo; @@ -8316,9 +8249,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -8328,14 +8260,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeInactiveTextWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::InactiveText::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInactiveTextWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -8350,12 +8282,13 @@ - (void)writeAttributeInactiveTextWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -8367,13 +8300,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BinaryInputBasic::Attributes::InactiveText::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInactiveTextWithParams:(MTRSubscribeParams * _Nonnull)params @@ -8382,27 +8313,25 @@ - (void)subscribeAttributeInactiveTextWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BinaryInputBasic::Attributes::InactiveText::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BinaryInputBasic::Attributes::InactiveText::TypeInfo; - chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInactiveTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -8410,7 +8339,8 @@ + (void)readAttributeInactiveTextWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::InactiveText::TypeInfo; @@ -8419,9 +8349,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -8431,14 +8360,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeOutOfServiceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::OutOfService::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOutOfServiceWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -8453,12 +8382,13 @@ - (void)writeAttributeOutOfServiceWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -8470,13 +8400,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BinaryInputBasic::Attributes::OutOfService::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOutOfServiceWithParams:(MTRSubscribeParams * _Nonnull)params @@ -8485,26 +8413,25 @@ - (void)subscribeAttributeOutOfServiceWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BinaryInputBasic::Attributes::OutOfService::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOutOfServiceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -8512,7 +8439,8 @@ + (void)readAttributeOutOfServiceWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::OutOfService::TypeInfo; @@ -8521,9 +8449,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -8533,14 +8460,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePolarityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::Polarity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePolarityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -8549,26 +8476,25 @@ - (void)subscribeAttributePolarityWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BinaryInputBasic::Attributes::Polarity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePolarityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -8576,7 +8502,8 @@ + (void)readAttributePolarityWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::Polarity::TypeInfo; @@ -8585,9 +8512,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -8597,14 +8523,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributePresentValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::PresentValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributePresentValueWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -8619,12 +8545,13 @@ - (void)writeAttributePresentValueWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -8636,13 +8563,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BinaryInputBasic::Attributes::PresentValue::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePresentValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -8651,26 +8576,25 @@ - (void)subscribeAttributePresentValueWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BinaryInputBasic::Attributes::PresentValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePresentValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -8678,7 +8602,8 @@ + (void)readAttributePresentValueWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::PresentValue::TypeInfo; @@ -8687,9 +8612,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -8699,14 +8623,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeReliabilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::Reliability::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeReliabilityWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -8721,12 +8645,13 @@ - (void)writeAttributeReliabilityWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -8738,13 +8663,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BinaryInputBasic::Attributes::Reliability::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeReliabilityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -8753,26 +8676,25 @@ - (void)subscribeAttributeReliabilityWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BinaryInputBasic::Attributes::Reliability::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeReliabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -8780,7 +8702,8 @@ + (void)readAttributeReliabilityWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::Reliability::TypeInfo; @@ -8789,9 +8712,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -8801,14 +8723,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeStatusFlagsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::StatusFlags::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStatusFlagsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -8817,26 +8739,25 @@ - (void)subscribeAttributeStatusFlagsWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BinaryInputBasic::Attributes::StatusFlags::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStatusFlagsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -8844,7 +8765,8 @@ + (void)readAttributeStatusFlagsWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::StatusFlags::TypeInfo; @@ -8853,9 +8775,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -8865,14 +8786,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeApplicationTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::ApplicationType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeApplicationTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -8881,26 +8802,25 @@ - (void)subscribeAttributeApplicationTypeWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BinaryInputBasic::Attributes::ApplicationType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeApplicationTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -8908,7 +8828,8 @@ + (void)readAttributeApplicationTypeWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::ApplicationType::TypeInfo; @@ -8917,9 +8838,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -8929,14 +8849,15 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BinaryInputBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -8946,28 +8867,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BinaryInputBasic::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BinaryInputBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BinaryInputBasic::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -8976,8 +8897,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BinaryInputBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::GeneratedCommandList::TypeInfo; @@ -8986,9 +8908,8 @@ new MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -8998,14 +8919,15 @@ new MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BinaryInputBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -9015,28 +8937,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BinaryInputBasic::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BinaryInputBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BinaryInputBasic::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -9045,8 +8967,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BinaryInputBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::AcceptedCommandList::TypeInfo; @@ -9055,9 +8978,8 @@ new MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -9067,14 +8989,15 @@ new MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BinaryInputBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -9083,27 +9006,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BinaryInputBasic::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BinaryInputBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BinaryInputBasic::Attributes::AttributeList::TypeInfo; - chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -9111,8 +9034,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBinaryInputBasicAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BinaryInputBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::AttributeList::TypeInfo; @@ -9121,9 +9045,8 @@ new MTRBinaryInputBasicAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -9133,14 +9056,14 @@ new MTRBinaryInputBasicAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -9149,26 +9072,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BinaryInputBasic::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -9176,7 +9098,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::FeatureMap::TypeInfo; @@ -9185,9 +9108,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -9197,14 +9119,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BinaryInputBasic::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -9213,26 +9135,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BinaryInputBasic::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -9240,7 +9161,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BinaryInputBasic::Attributes::ClusterRevision::TypeInfo; @@ -9249,9 +9171,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -9826,14 +9747,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeDeviceTypeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorDeviceTypeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorDeviceTypeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorDeviceTypeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Descriptor::Attributes::DeviceTypeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDeviceTypeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -9842,27 +9763,26 @@ - (void)subscribeAttributeDeviceTypeListWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Descriptor::Attributes::DeviceTypeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorDeviceTypeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Descriptor::Attributes::DeviceTypeList::TypeInfo; - chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDeviceTypeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -9870,7 +9790,8 @@ + (void)readAttributeDeviceTypeListWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorDeviceTypeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorDeviceTypeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(DescriptorDeviceTypeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Descriptor::Attributes::DeviceTypeList::TypeInfo; @@ -9879,9 +9800,8 @@ new MTRDescriptorDeviceTypeListListAttributeCallbackBridge(queue, completion, ^( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -9891,14 +9811,14 @@ new MTRDescriptorDeviceTypeListListAttributeCallbackBridge(queue, completion, ^( - (void)readAttributeServerListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorServerListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorServerListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorServerListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Descriptor::Attributes::ServerList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeServerListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -9907,27 +9827,26 @@ - (void)subscribeAttributeServerListWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRDescriptorServerListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDescriptorServerListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Descriptor::Attributes::ServerList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDescriptorServerListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorServerListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Descriptor::Attributes::ServerList::TypeInfo; - chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDescriptorServerListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDescriptorServerListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDescriptorServerListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeServerListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -9935,7 +9854,8 @@ + (void)readAttributeServerListWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorServerListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorServerListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(DescriptorServerListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Descriptor::Attributes::ServerList::TypeInfo; @@ -9944,9 +9864,8 @@ new MTRDescriptorServerListListAttributeCallbackBridge(queue, completion, ^(Canc path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -9956,14 +9875,14 @@ new MTRDescriptorServerListListAttributeCallbackBridge(queue, completion, ^(Canc - (void)readAttributeClientListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorClientListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorClientListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorClientListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Descriptor::Attributes::ClientList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClientListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -9972,27 +9891,26 @@ - (void)subscribeAttributeClientListWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRDescriptorClientListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDescriptorClientListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Descriptor::Attributes::ClientList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDescriptorClientListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorClientListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Descriptor::Attributes::ClientList::TypeInfo; - chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDescriptorClientListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDescriptorClientListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDescriptorClientListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClientListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -10000,7 +9918,8 @@ + (void)readAttributeClientListWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorClientListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorClientListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(DescriptorClientListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Descriptor::Attributes::ClientList::TypeInfo; @@ -10009,9 +9928,8 @@ new MTRDescriptorClientListListAttributeCallbackBridge(queue, completion, ^(Canc path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -10021,14 +9939,14 @@ new MTRDescriptorClientListListAttributeCallbackBridge(queue, completion, ^(Canc - (void)readAttributePartsListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorPartsListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorPartsListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorPartsListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Descriptor::Attributes::PartsList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePartsListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -10037,27 +9955,26 @@ - (void)subscribeAttributePartsListWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Descriptor::Attributes::PartsList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorPartsListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Descriptor::Attributes::PartsList::TypeInfo; - chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePartsListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -10065,7 +9982,8 @@ + (void)readAttributePartsListWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorPartsListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorPartsListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(DescriptorPartsListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Descriptor::Attributes::PartsList::TypeInfo; @@ -10074,9 +9992,8 @@ new MTRDescriptorPartsListListAttributeCallbackBridge(queue, completion, ^(Cance path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -10086,14 +10003,15 @@ new MTRDescriptorPartsListListAttributeCallbackBridge(queue, completion, ^(Cance - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DescriptorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = Descriptor::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -10103,27 +10021,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Descriptor::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DescriptorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Descriptor::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -10132,8 +10050,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DescriptorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Descriptor::Attributes::GeneratedCommandList::TypeInfo; @@ -10142,9 +10061,8 @@ new MTRDescriptorGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -10154,14 +10072,15 @@ new MTRDescriptorGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DescriptorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = Descriptor::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -10171,27 +10090,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Descriptor::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DescriptorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Descriptor::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -10200,8 +10119,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DescriptorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Descriptor::Attributes::AcceptedCommandList::TypeInfo; @@ -10210,9 +10130,8 @@ new MTRDescriptorAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -10222,14 +10141,14 @@ new MTRDescriptorAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Descriptor::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -10238,27 +10157,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Descriptor::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Descriptor::Attributes::AttributeList::TypeInfo; - chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -10266,7 +10184,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDescriptorAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDescriptorAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(DescriptorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Descriptor::Attributes::AttributeList::TypeInfo; @@ -10275,9 +10194,8 @@ new MTRDescriptorAttributeListListAttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -10287,14 +10205,14 @@ new MTRDescriptorAttributeListListAttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Descriptor::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -10303,26 +10221,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Descriptor::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -10330,7 +10247,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Descriptor::Attributes::FeatureMap::TypeInfo; @@ -10339,9 +10257,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -10351,14 +10268,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Descriptor::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -10367,26 +10284,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Descriptor::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -10394,7 +10310,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Descriptor::Attributes::ClusterRevision::TypeInfo; @@ -10403,9 +10320,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -10749,15 +10665,14 @@ - (void)readAttributeBindingWithParams:(MTRReadParams * _Nullable)params completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { // Make a copy of params before we go async. params = [params copy]; - new MTRBindingBindingListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBindingBindingListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BindingBindingListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Binding::Attributes::Binding::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute( - successFn->mContext, successFn->mCall, failureFn->mCall, params.filterByFabric); + return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBindingWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -10772,12 +10687,13 @@ - (void)writeAttributeBindingWithValue:(NSArray * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -10826,13 +10742,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBindingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -10841,27 +10755,25 @@ - (void)subscribeAttributeBindingWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRBindingBindingListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBindingBindingListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Binding::Attributes::Binding::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBindingBindingListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BindingBindingListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Binding::Attributes::Binding::TypeInfo; - chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBindingBindingListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBindingBindingListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBindingBindingListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBindingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -10869,7 +10781,8 @@ + (void)readAttributeBindingWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBindingBindingListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBindingBindingListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BindingBindingListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Binding::Attributes::Binding::TypeInfo; @@ -10878,9 +10791,8 @@ new MTRBindingBindingListAttributeCallbackBridge(queue, completion, ^(Cancelable path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -10890,14 +10802,15 @@ new MTRBindingBindingListAttributeCallbackBridge(queue, completion, ^(Cancelable - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBindingGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBindingGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BindingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = Binding::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -10907,27 +10820,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Binding::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BindingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Binding::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -10936,35 +10849,36 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBindingGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = Binding::Attributes::GeneratedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRBindingGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BindingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = Binding::Attributes::GeneratedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBindingAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBindingAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BindingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Binding::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -10974,27 +10888,26 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Binding::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BindingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Binding::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -11003,35 +10916,36 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBindingAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = Binding::Attributes::AcceptedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRBindingAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BindingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = Binding::Attributes::AcceptedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBindingAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBindingAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BindingAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Binding::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -11040,27 +10954,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRBindingAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBindingAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Binding::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBindingAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BindingAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Binding::Attributes::AttributeList::TypeInfo; - chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBindingAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBindingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBindingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -11068,7 +10981,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBindingAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBindingAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BindingAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Binding::Attributes::AttributeList::TypeInfo; @@ -11077,9 +10991,8 @@ new MTRBindingAttributeListListAttributeCallbackBridge(queue, completion, ^(Canc path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -11089,14 +11002,14 @@ new MTRBindingAttributeListListAttributeCallbackBridge(queue, completion, ^(Canc - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Binding::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -11105,26 +11018,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Binding::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -11132,7 +11044,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Binding::Attributes::FeatureMap::TypeInfo; @@ -11141,9 +11054,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -11153,14 +11065,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Binding::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -11169,26 +11081,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Binding::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -11196,7 +11107,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Binding::Attributes::ClusterRevision::TypeInfo; @@ -11205,9 +11117,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -11462,15 +11373,14 @@ - (void)readAttributeAclWithParams:(MTRReadParams * _Nullable)params completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { // Make a copy of params before we go async. params = [params copy]; - new MTRAccessControlAclListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccessControlAclListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, AccessControlAclListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AccessControl::Attributes::Acl::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute( - successFn->mContext, successFn->mCall, failureFn->mCall, params.filterByFabric); + return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeAclWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -11485,12 +11395,13 @@ - (void)writeAttributeAclWithValue:(NSArray * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -11600,13 +11511,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAclWithParams:(MTRSubscribeParams * _Nonnull)params @@ -11615,27 +11524,25 @@ - (void)subscribeAttributeAclWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRAccessControlAclListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAccessControlAclListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AccessControl::Attributes::Acl::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAccessControlAclListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, AccessControlAclListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AccessControl::Attributes::Acl::TypeInfo; - chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAccessControlAclListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAccessControlAclListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAccessControlAclListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAclWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -11643,7 +11550,8 @@ + (void)readAttributeAclWithAttributeCache:(MTRAttributeCacheContainer *)attribu queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccessControlAclListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccessControlAclListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(AccessControlAclListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccessControl::Attributes::Acl::TypeInfo; @@ -11652,9 +11560,8 @@ new MTRAccessControlAclListAttributeCallbackBridge(queue, completion, ^(Cancelab path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -11666,15 +11573,14 @@ - (void)readAttributeExtensionWithParams:(MTRReadParams * _Nullable)params completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { // Make a copy of params before we go async. params = [params copy]; - new MTRAccessControlExtensionListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccessControlExtensionListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, AccessControlExtensionListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AccessControl::Attributes::Extension::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute( - successFn->mContext, successFn->mCall, failureFn->mCall, params.filterByFabric); + return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeExtensionWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -11689,12 +11595,13 @@ - (void)writeAttributeExtensionWithValue:(NSArray * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -11728,13 +11635,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeExtensionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -11743,27 +11648,26 @@ - (void)subscribeAttributeExtensionWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AccessControl::Attributes::Extension::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, AccessControlExtensionListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AccessControl::Attributes::Extension::TypeInfo; - chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeExtensionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -11771,7 +11675,8 @@ + (void)readAttributeExtensionWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccessControlExtensionListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccessControlExtensionListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(AccessControlExtensionListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccessControl::Attributes::Extension::TypeInfo; @@ -11780,9 +11685,8 @@ new MTRAccessControlExtensionListAttributeCallbackBridge(queue, completion, ^(Ca path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -11793,14 +11697,14 @@ new MTRAccessControlExtensionListAttributeCallbackBridge(queue, completion, ^(Ca - (void)readAttributeSubjectsPerAccessControlEntryWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSubjectsPerAccessControlEntryWithParams:(MTRSubscribeParams * _Nonnull)params @@ -11811,26 +11715,25 @@ - (void)subscribeAttributeSubjectsPerAccessControlEntryWithParams:(MTRSubscribeP { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSubjectsPerAccessControlEntryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -11839,7 +11742,8 @@ + (void)readAttributeSubjectsPerAccessControlEntryWithAttributeCache:(MTRAttribu completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo; @@ -11848,9 +11752,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -11861,14 +11764,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTargetsPerAccessControlEntryWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTargetsPerAccessControlEntryWithParams:(MTRSubscribeParams * _Nonnull)params @@ -11879,26 +11782,25 @@ - (void)subscribeAttributeTargetsPerAccessControlEntryWithParams:(MTRSubscribePa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTargetsPerAccessControlEntryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -11907,7 +11809,8 @@ + (void)readAttributeTargetsPerAccessControlEntryWithAttributeCache:(MTRAttribut completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo; @@ -11916,9 +11819,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -11929,14 +11831,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAccessControlEntriesPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAccessControlEntriesPerFabricWithParams:(MTRSubscribeParams * _Nonnull)params @@ -11947,26 +11849,25 @@ - (void)subscribeAttributeAccessControlEntriesPerFabricWithParams:(MTRSubscribeP { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAccessControlEntriesPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -11975,7 +11876,8 @@ + (void)readAttributeAccessControlEntriesPerFabricWithAttributeCache:(MTRAttribu completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo; @@ -11984,9 +11886,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -11996,14 +11897,15 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccessControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = AccessControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -12013,27 +11915,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AccessControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccessControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AccessControl::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -12042,8 +11944,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccessControlGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(AccessControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccessControl::Attributes::GeneratedCommandList::TypeInfo; @@ -12052,9 +11955,8 @@ new MTRAccessControlGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -12064,14 +11966,15 @@ new MTRAccessControlGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccessControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = AccessControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -12081,27 +11984,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AccessControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccessControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AccessControl::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -12110,8 +12013,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccessControlAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(AccessControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccessControl::Attributes::AcceptedCommandList::TypeInfo; @@ -12120,9 +12024,8 @@ new MTRAccessControlAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -12132,14 +12035,14 @@ new MTRAccessControlAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccessControlAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccessControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccessControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AccessControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -12148,27 +12051,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AccessControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccessControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AccessControl::Attributes::AttributeList::TypeInfo; - chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -12176,35 +12078,36 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccessControlAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = AccessControl::Attributes::AttributeList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRAccessControlAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(AccessControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = AccessControl::Attributes::AttributeList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AccessControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -12213,26 +12116,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AccessControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -12240,7 +12142,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccessControl::Attributes::FeatureMap::TypeInfo; @@ -12249,9 +12152,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -12261,14 +12163,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AccessControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -12277,26 +12179,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AccessControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -12304,7 +12205,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccessControl::Attributes::ClusterRevision::TypeInfo; @@ -12313,9 +12215,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -12718,12 +12619,13 @@ - (void)instantActionWithParams:(MTRActionsClusterInstantActionParams *)params c { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::InstantAction::Type request; @@ -12738,11 +12640,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)instantActionWithTransitionWithParams:(MTRActionsClusterInstantActionWithTransitionParams *)params @@ -12750,12 +12651,13 @@ - (void)instantActionWithTransitionWithParams:(MTRActionsClusterInstantActionWit { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::InstantActionWithTransition::Type request; @@ -12771,23 +12673,23 @@ new MTRCommandSuccessCallbackBridge( } request.transitionTime = params.transitionTime.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)startActionWithParams:(MTRActionsClusterStartActionParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::StartAction::Type request; @@ -12802,11 +12704,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)startActionWithDurationWithParams:(MTRActionsClusterStartActionWithDurationParams *)params @@ -12814,12 +12715,13 @@ - (void)startActionWithDurationWithParams:(MTRActionsClusterStartActionWithDurat { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::StartActionWithDuration::Type request; @@ -12835,23 +12737,23 @@ new MTRCommandSuccessCallbackBridge( } request.duration = params.duration.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stopActionWithParams:(MTRActionsClusterStopActionParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::StopAction::Type request; @@ -12866,23 +12768,23 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)pauseActionWithParams:(MTRActionsClusterPauseActionParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::PauseAction::Type request; @@ -12897,11 +12799,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)pauseActionWithDurationWithParams:(MTRActionsClusterPauseActionWithDurationParams *)params @@ -12909,12 +12810,13 @@ - (void)pauseActionWithDurationWithParams:(MTRActionsClusterPauseActionWithDurat { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::PauseActionWithDuration::Type request; @@ -12930,23 +12832,23 @@ new MTRCommandSuccessCallbackBridge( } request.duration = params.duration.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)resumeActionWithParams:(MTRActionsClusterResumeActionParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::ResumeAction::Type request; @@ -12961,23 +12863,23 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)enableActionWithParams:(MTRActionsClusterEnableActionParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::EnableAction::Type request; @@ -12992,11 +12894,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)enableActionWithDurationWithParams:(MTRActionsClusterEnableActionWithDurationParams *)params @@ -13004,12 +12905,13 @@ - (void)enableActionWithDurationWithParams:(MTRActionsClusterEnableActionWithDur { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::EnableActionWithDuration::Type request; @@ -13025,23 +12927,23 @@ new MTRCommandSuccessCallbackBridge( } request.duration = params.duration.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)disableActionWithParams:(MTRActionsClusterDisableActionParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::DisableAction::Type request; @@ -13056,11 +12958,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)disableActionWithDurationWithParams:(MTRActionsClusterDisableActionWithDurationParams *)params @@ -13068,12 +12969,13 @@ - (void)disableActionWithDurationWithParams:(MTRActionsClusterDisableActionWithD { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::DisableActionWithDuration::Type request; @@ -13089,23 +12991,22 @@ new MTRCommandSuccessCallbackBridge( } request.duration = params.duration.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeActionListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRActionsActionListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRActionsActionListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsActionListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Actions::Attributes::ActionList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActionListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -13114,27 +13015,25 @@ - (void)subscribeAttributeActionListWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRActionsActionListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRActionsActionListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Actions::Attributes::ActionList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRActionsActionListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsActionListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Actions::Attributes::ActionList::TypeInfo; - chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRActionsActionListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRActionsActionListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRActionsActionListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActionListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -13142,7 +13041,8 @@ + (void)readAttributeActionListWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRActionsActionListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRActionsActionListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ActionsActionListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Actions::Attributes::ActionList::TypeInfo; @@ -13151,9 +13051,8 @@ new MTRActionsActionListListAttributeCallbackBridge(queue, completion, ^(Cancela path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -13163,14 +13062,14 @@ new MTRActionsActionListListAttributeCallbackBridge(queue, completion, ^(Cancela - (void)readAttributeEndpointListsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRActionsEndpointListsListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRActionsEndpointListsListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsEndpointListsListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Actions::Attributes::EndpointLists::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEndpointListsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -13179,27 +13078,26 @@ - (void)subscribeAttributeEndpointListsWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Actions::Attributes::EndpointLists::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsEndpointListsListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Actions::Attributes::EndpointLists::TypeInfo; - chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEndpointListsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -13207,7 +13105,8 @@ + (void)readAttributeEndpointListsWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRActionsEndpointListsListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRActionsEndpointListsListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ActionsEndpointListsListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Actions::Attributes::EndpointLists::TypeInfo; @@ -13216,9 +13115,8 @@ new MTRActionsEndpointListsListAttributeCallbackBridge(queue, completion, ^(Canc path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -13228,14 +13126,14 @@ new MTRActionsEndpointListsListAttributeCallbackBridge(queue, completion, ^(Canc - (void)readAttributeSetupURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Actions::Attributes::SetupURL::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSetupURLWithParams:(MTRSubscribeParams * _Nonnull)params @@ -13244,27 +13142,25 @@ - (void)subscribeAttributeSetupURLWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Actions::Attributes::SetupURL::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Actions::Attributes::SetupURL::TypeInfo; - chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSetupURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -13272,7 +13168,8 @@ + (void)readAttributeSetupURLWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Actions::Attributes::SetupURL::TypeInfo; @@ -13281,9 +13178,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -13293,14 +13189,15 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRActionsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRActionsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ActionsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = Actions::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -13310,27 +13207,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Actions::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ActionsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Actions::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -13339,35 +13236,36 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRActionsGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = Actions::Attributes::GeneratedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRActionsGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ActionsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = Actions::Attributes::GeneratedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRActionsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRActionsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ActionsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Actions::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -13377,27 +13275,26 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Actions::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ActionsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Actions::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -13406,35 +13303,36 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRActionsAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = Actions::Attributes::AcceptedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRActionsAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ActionsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = Actions::Attributes::AcceptedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRActionsAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRActionsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Actions::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -13443,27 +13341,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRActionsAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRActionsAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Actions::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRActionsAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Actions::Attributes::AttributeList::TypeInfo; - chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRActionsAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRActionsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRActionsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -13471,7 +13368,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRActionsAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRActionsAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ActionsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Actions::Attributes::AttributeList::TypeInfo; @@ -13480,9 +13378,8 @@ new MTRActionsAttributeListListAttributeCallbackBridge(queue, completion, ^(Canc path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -13492,14 +13389,14 @@ new MTRActionsAttributeListListAttributeCallbackBridge(queue, completion, ^(Canc - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Actions::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -13508,26 +13405,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Actions::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -13535,7 +13431,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Actions::Attributes::FeatureMap::TypeInfo; @@ -13544,9 +13441,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -13556,14 +13452,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Actions::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -13572,26 +13468,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Actions::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -13599,7 +13494,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Actions::Attributes::ClusterRevision::TypeInfo; @@ -13608,9 +13504,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -13985,12 +13880,13 @@ - (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nulla { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Basic::Commands::MfgSpecificPing::Type request; @@ -14000,23 +13896,22 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeDataModelRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::DataModelRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDataModelRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14025,26 +13920,25 @@ - (void)subscribeAttributeDataModelRevisionWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Basic::Attributes::DataModelRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDataModelRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14052,7 +13946,8 @@ + (void)readAttributeDataModelRevisionWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::DataModelRevision::TypeInfo; @@ -14061,9 +13956,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14073,14 +13967,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeVendorNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::VendorName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14089,27 +13983,25 @@ - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::VendorName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::VendorName::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14117,7 +14009,8 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::VendorName::TypeInfo; @@ -14126,9 +14019,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14138,14 +14030,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::VendorID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14154,26 +14046,25 @@ - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRVendorIdAttributeCallbackSubscriptionBridge * callbackBridge = new MTRVendorIdAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Basic::Attributes::VendorID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRVendorIdAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14181,7 +14072,8 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(VendorIdAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::VendorID::TypeInfo; @@ -14190,9 +14082,8 @@ new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14202,14 +14093,14 @@ new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success - (void)readAttributeProductNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::ProductName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeProductNameWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14218,27 +14109,25 @@ - (void)subscribeAttributeProductNameWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::ProductName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::ProductName::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14246,7 +14135,8 @@ + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::ProductName::TypeInfo; @@ -14255,9 +14145,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14267,14 +14156,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeProductIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::ProductID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeProductIDWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14283,26 +14172,25 @@ - (void)subscribeAttributeProductIDWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Basic::Attributes::ProductID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14310,7 +14198,8 @@ + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::ProductID::TypeInfo; @@ -14319,9 +14208,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14331,14 +14219,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeNodeLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNodeLabelWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -14353,12 +14241,13 @@ - (void)writeAttributeNodeLabelWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -14370,13 +14259,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNodeLabelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14385,27 +14272,25 @@ - (void)subscribeAttributeNodeLabelWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14413,7 +14298,8 @@ + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo; @@ -14422,9 +14308,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14434,14 +14319,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeLocationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::Location::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLocationWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -14456,12 +14341,13 @@ - (void)writeAttributeLocationWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -14473,13 +14359,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Basic::Attributes::Location::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLocationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14488,27 +14372,25 @@ - (void)subscribeAttributeLocationWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::Location::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::Location::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLocationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14516,7 +14398,8 @@ + (void)readAttributeLocationWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::Location::TypeInfo; @@ -14525,9 +14408,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14537,14 +14419,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeHardwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::HardwareVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeHardwareVersionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14553,26 +14435,25 @@ - (void)subscribeAttributeHardwareVersionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Basic::Attributes::HardwareVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14580,7 +14461,8 @@ + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::HardwareVersion::TypeInfo; @@ -14589,9 +14471,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14601,14 +14482,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeHardwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14618,27 +14499,25 @@ - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14647,7 +14526,8 @@ + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo; @@ -14656,9 +14536,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14668,14 +14547,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeSoftwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::SoftwareVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSoftwareVersionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14684,26 +14563,25 @@ - (void)subscribeAttributeSoftwareVersionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Basic::Attributes::SoftwareVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14711,7 +14589,8 @@ + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::SoftwareVersion::TypeInfo; @@ -14720,9 +14599,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14732,14 +14610,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeSoftwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14749,27 +14627,25 @@ - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14778,7 +14654,8 @@ + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo; @@ -14787,9 +14664,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14799,14 +14675,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeManufacturingDateWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeManufacturingDateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14815,27 +14691,25 @@ - (void)subscribeAttributeManufacturingDateWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14843,7 +14717,8 @@ + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo; @@ -14852,9 +14727,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14864,14 +14738,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributePartNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::PartNumber::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePartNumberWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14880,27 +14754,25 @@ - (void)subscribeAttributePartNumberWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::PartNumber::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::PartNumber::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14908,7 +14780,8 @@ + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::PartNumber::TypeInfo; @@ -14917,9 +14790,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14929,14 +14801,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeProductURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::ProductURL::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeProductURLWithParams:(MTRSubscribeParams * _Nonnull)params @@ -14945,27 +14817,25 @@ - (void)subscribeAttributeProductURLWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::ProductURL::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::ProductURL::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -14973,7 +14843,8 @@ + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::ProductURL::TypeInfo; @@ -14982,9 +14853,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -14994,14 +14864,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeProductLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeProductLabelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -15010,27 +14880,25 @@ - (void)subscribeAttributeProductLabelWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -15038,7 +14906,8 @@ + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo; @@ -15047,9 +14916,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -15059,14 +14927,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeSerialNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSerialNumberWithParams:(MTRSubscribeParams * _Nonnull)params @@ -15075,27 +14943,25 @@ - (void)subscribeAttributeSerialNumberWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -15103,7 +14969,8 @@ + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo; @@ -15112,9 +14979,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -15124,14 +14990,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeLocalConfigDisabledWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLocalConfigDisabledWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -15146,12 +15012,13 @@ - (void)writeAttributeLocalConfigDisabledWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -15163,13 +15030,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLocalConfigDisabledWithParams:(MTRSubscribeParams * _Nonnull)params @@ -15179,26 +15044,25 @@ - (void)subscribeAttributeLocalConfigDisabledWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLocalConfigDisabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -15207,7 +15071,8 @@ + (void)readAttributeLocalConfigDisabledWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo; @@ -15216,9 +15081,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -15228,14 +15092,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeReachableWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::Reachable::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeReachableWithParams:(MTRSubscribeParams * _Nonnull)params @@ -15244,26 +15108,25 @@ - (void)subscribeAttributeReachableWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Basic::Attributes::Reachable::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -15271,7 +15134,8 @@ + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::Reachable::TypeInfo; @@ -15280,9 +15144,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -15292,14 +15155,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeUniqueIDWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::UniqueID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUniqueIDWithParams:(MTRSubscribeParams * _Nonnull)params @@ -15308,27 +15171,25 @@ - (void)subscribeAttributeUniqueIDWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::UniqueID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::UniqueID::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -15336,7 +15197,8 @@ + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::UniqueID::TypeInfo; @@ -15345,9 +15207,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -15358,14 +15219,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeCapabilityMinimaWithCompletion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error))completion { - new MTRBasicCapabilityMinimaStructAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBasicCapabilityMinimaStructAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicCapabilityMinimaStructAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCapabilityMinimaWithParams:(MTRSubscribeParams * _Nonnull)params @@ -15375,27 +15236,26 @@ - (void)subscribeAttributeCapabilityMinimaWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicCapabilityMinimaStructAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCapabilityMinimaWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -15404,7 +15264,8 @@ + (void)readAttributeCapabilityMinimaWithAttributeCache:(MTRAttributeCacheContai completion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error))completion { - new MTRBasicCapabilityMinimaStructAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBasicCapabilityMinimaStructAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BasicCapabilityMinimaStructAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo; @@ -15413,9 +15274,8 @@ new MTRBasicCapabilityMinimaStructAttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -15425,14 +15285,14 @@ new MTRBasicCapabilityMinimaStructAttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -15442,27 +15302,26 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -15471,7 +15330,8 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo; @@ -15480,9 +15340,8 @@ new MTRBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -15492,14 +15351,14 @@ new MTRBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^ - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicAcceptedCommandListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -15509,27 +15368,26 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicAcceptedCommandListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -15538,7 +15396,8 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo; @@ -15547,9 +15406,8 @@ new MTRBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -15559,14 +15417,14 @@ new MTRBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -15575,27 +15433,25 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRBasicAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBasicAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Basic::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBasicAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::AttributeList::TypeInfo; - chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBasicAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -15603,7 +15459,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBasicAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBasicAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::AttributeList::TypeInfo; @@ -15612,9 +15469,8 @@ new MTRBasicAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancel path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -15624,14 +15480,14 @@ new MTRBasicAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancel - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -15640,26 +15496,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Basic::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -15667,7 +15522,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::FeatureMap::TypeInfo; @@ -15676,9 +15532,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -15688,14 +15543,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Basic::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -15704,26 +15559,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Basic::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -15731,7 +15585,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Basic::Attributes::ClusterRevision::TypeInfo; @@ -15740,9 +15595,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -16682,8 +16536,10 @@ - (void)queryImageWithParams:(MTROtaSoftwareUpdateProviderClusterQueryImageParam { // Make a copy of params before we go async. params = [params copy]; - new MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateProviderClusterQueryImageResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OtaSoftwareUpdateProvider::Commands::QueryImage::Type request; @@ -16735,11 +16591,10 @@ new MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(self.cal definedValue_0 = [self asByteSpan:params.metadataForProvider]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)applyUpdateRequestWithParams:(MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams *)params @@ -16748,8 +16603,10 @@ - (void)applyUpdateRequestWithParams:(MTROtaSoftwareUpdateProviderClusterApplyUp { // Make a copy of params before we go async. params = [params copy]; - new MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OtaSoftwareUpdateProvider::Commands::ApplyUpdateRequest::Type request; @@ -16761,11 +16618,10 @@ new MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(self.ca request.updateToken = [self asByteSpan:params.updateToken]; request.newVersion = params.newVersion.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)notifyUpdateAppliedWithParams:(MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams *)params @@ -16773,12 +16629,13 @@ - (void)notifyUpdateAppliedWithParams:(MTROtaSoftwareUpdateProviderClusterNotify { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OtaSoftwareUpdateProvider::Commands::NotifyUpdateApplied::Type request; @@ -16790,23 +16647,23 @@ new MTRCommandSuccessCallbackBridge( request.updateToken = [self asByteSpan:params.updateToken]; request.softwareVersion = params.softwareVersion.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateProvider::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -16816,30 +16673,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OtaSoftwareUpdateProvider::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OtaSoftwareUpdateProvider::Attributes::GeneratedCommandList::TypeInfo; + + chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -16848,8 +16703,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateProvider::Attributes::GeneratedCommandList::TypeInfo; @@ -16858,10 +16714,8 @@ new MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -16871,14 +16725,15 @@ new MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -16888,30 +16743,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AcceptedCommandList::TypeInfo; + + chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -16920,8 +16773,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AcceptedCommandList::TypeInfo; @@ -16930,10 +16784,8 @@ new MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -16943,14 +16795,15 @@ new MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateProviderAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -16959,28 +16812,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateProviderAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AttributeList::TypeInfo; - chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -16988,8 +16841,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OtaSoftwareUpdateProviderAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AttributeList::TypeInfo; @@ -16998,9 +16852,8 @@ new MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -17010,14 +16863,14 @@ new MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateProvider::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -17026,26 +16879,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OtaSoftwareUpdateProvider::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -17053,7 +16905,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateProvider::Attributes::FeatureMap::TypeInfo; @@ -17062,9 +16915,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -17074,14 +16926,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateProvider::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -17090,26 +16942,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OtaSoftwareUpdateProvider::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -17117,7 +16968,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateProvider::Attributes::ClusterRevision::TypeInfo; @@ -17126,9 +16978,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -17359,12 +17210,13 @@ - (void)announceOtaProviderWithParams:(MTROtaSoftwareUpdateRequestorClusterAnnou { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OtaSoftwareUpdateRequestor::Commands::AnnounceOtaProvider::Type request; @@ -17383,26 +17235,25 @@ new MTRCommandSuccessCallbackBridge( } request.endpoint = params.endpoint.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeDefaultOtaProvidersWithParams:(MTRReadParams * _Nullable)params completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { // Make a copy of params before we go async. params = [params copy]; - new MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::DefaultOtaProviders::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute( - successFn->mContext, successFn->mCall, failureFn->mCall, params.filterByFabric); + return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeDefaultOtaProvidersWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -17417,12 +17268,13 @@ - (void)writeAttributeDefaultOtaProvidersWithValue:(NSArray * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -17457,13 +17309,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDefaultOtaProvidersWithParams:(MTRSubscribeParams * _Nonnull)params @@ -17473,30 +17323,28 @@ - (void)subscribeAttributeDefaultOtaProvidersWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::DefaultOtaProviders::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::DefaultOtaProviders::TypeInfo; - chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDefaultOtaProvidersWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -17505,8 +17353,9 @@ + (void)readAttributeDefaultOtaProvidersWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::DefaultOtaProviders::TypeInfo; @@ -17515,10 +17364,8 @@ new MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -17528,14 +17375,14 @@ new MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge( - (void)readAttributeUpdatePossibleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdatePossible::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUpdatePossibleWithParams:(MTRSubscribeParams * _Nonnull)params @@ -17544,26 +17391,25 @@ - (void)subscribeAttributeUpdatePossibleWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdatePossible::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUpdatePossibleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -17571,7 +17417,8 @@ + (void)readAttributeUpdatePossibleWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdatePossible::TypeInfo; @@ -17580,9 +17427,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -17592,15 +17438,16 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeUpdateStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateState::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateState::TypeInfo; + chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUpdateStateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -17609,30 +17456,29 @@ - (void)subscribeAttributeUpdateStateWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateState::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateState::TypeInfo; - chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUpdateStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -17640,8 +17486,9 @@ + (void)readAttributeUpdateStateWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateState::TypeInfo; @@ -17650,10 +17497,8 @@ new MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridg path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -17663,14 +17508,14 @@ new MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridg - (void)readAttributeUpdateStateProgressWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateStateProgress::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUpdateStateProgressWithParams:(MTRSubscribeParams * _Nonnull)params @@ -17680,27 +17525,25 @@ - (void)subscribeAttributeUpdateStateProgressWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateStateProgress::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateStateProgress::TypeInfo; - chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUpdateStateProgressWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -17709,7 +17552,8 @@ + (void)readAttributeUpdateStateProgressWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateStateProgress::TypeInfo; @@ -17718,9 +17562,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -17730,14 +17573,15 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -17747,30 +17591,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -17779,8 +17621,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::GeneratedCommandList::TypeInfo; @@ -17789,10 +17632,8 @@ new MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -17802,14 +17643,15 @@ new MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -17819,30 +17661,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -17851,8 +17691,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AcceptedCommandList::TypeInfo; @@ -17861,10 +17702,8 @@ new MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -17874,14 +17713,15 @@ new MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateRequestorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -17890,28 +17730,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateRequestorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AttributeList::TypeInfo; - chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -17919,8 +17759,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OtaSoftwareUpdateRequestorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AttributeList::TypeInfo; @@ -17929,9 +17770,8 @@ new MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -17941,14 +17781,14 @@ new MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -17957,26 +17797,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -17984,7 +17823,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::FeatureMap::TypeInfo; @@ -17993,9 +17833,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -18005,14 +17844,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -18021,26 +17860,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -18048,7 +17886,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::ClusterRevision::TypeInfo; @@ -18057,9 +17896,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -18427,14 +18265,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeActiveLocaleWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LocalizationConfiguration::Attributes::ActiveLocale::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeActiveLocaleWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -18449,12 +18287,13 @@ - (void)writeAttributeActiveLocaleWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -18466,13 +18305,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = LocalizationConfiguration::Attributes::ActiveLocale::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveLocaleWithParams:(MTRSubscribeParams * _Nonnull)params @@ -18481,27 +18318,25 @@ - (void)subscribeAttributeActiveLocaleWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LocalizationConfiguration::Attributes::ActiveLocale::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LocalizationConfiguration::Attributes::ActiveLocale::TypeInfo; - chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveLocaleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -18509,7 +18344,8 @@ + (void)readAttributeActiveLocaleWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LocalizationConfiguration::Attributes::ActiveLocale::TypeInfo; @@ -18518,9 +18354,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -18530,14 +18365,15 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeSupportedLocalesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LocalizationConfigurationSupportedLocalesListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = LocalizationConfiguration::Attributes::SupportedLocales::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSupportedLocalesWithParams:(MTRSubscribeParams * _Nonnull)params @@ -18546,28 +18382,28 @@ - (void)subscribeAttributeSupportedLocalesWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LocalizationConfiguration::Attributes::SupportedLocales::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LocalizationConfigurationSupportedLocalesListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LocalizationConfiguration::Attributes::SupportedLocales::TypeInfo; - chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSupportedLocalesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -18575,8 +18411,9 @@ + (void)readAttributeSupportedLocalesWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(LocalizationConfigurationSupportedLocalesListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LocalizationConfiguration::Attributes::SupportedLocales::TypeInfo; @@ -18585,9 +18422,8 @@ new MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -18597,14 +18433,15 @@ new MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge( - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LocalizationConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = LocalizationConfiguration::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -18614,30 +18451,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LocalizationConfiguration::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LocalizationConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LocalizationConfiguration::Attributes::GeneratedCommandList::TypeInfo; + + chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -18646,8 +18481,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(LocalizationConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LocalizationConfiguration::Attributes::GeneratedCommandList::TypeInfo; @@ -18656,10 +18492,8 @@ new MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -18669,14 +18503,15 @@ new MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LocalizationConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = LocalizationConfiguration::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -18686,30 +18521,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LocalizationConfiguration::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LocalizationConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LocalizationConfiguration::Attributes::AcceptedCommandList::TypeInfo; + + chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -18718,8 +18551,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(LocalizationConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LocalizationConfiguration::Attributes::AcceptedCommandList::TypeInfo; @@ -18728,10 +18562,8 @@ new MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -18741,14 +18573,15 @@ new MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LocalizationConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = LocalizationConfiguration::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -18757,28 +18590,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LocalizationConfiguration::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LocalizationConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LocalizationConfiguration::Attributes::AttributeList::TypeInfo; - chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -18786,8 +18619,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(LocalizationConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LocalizationConfiguration::Attributes::AttributeList::TypeInfo; @@ -18796,9 +18630,8 @@ new MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -18808,14 +18641,14 @@ new MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LocalizationConfiguration::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -18824,26 +18657,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LocalizationConfiguration::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -18851,7 +18683,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LocalizationConfiguration::Attributes::FeatureMap::TypeInfo; @@ -18860,9 +18693,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -18872,14 +18704,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LocalizationConfiguration::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -18888,26 +18720,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LocalizationConfiguration::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -18915,7 +18746,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LocalizationConfiguration::Attributes::ClusterRevision::TypeInfo; @@ -18924,9 +18756,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -19215,14 +19046,15 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeHourFormatWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationClusterHourFormatAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TimeFormatLocalization::Attributes::HourFormat::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeHourFormatWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -19237,12 +19069,13 @@ - (void)writeAttributeHourFormatWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -19254,13 +19087,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TimeFormatLocalization::Attributes::HourFormat::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeHourFormatWithParams:(MTRSubscribeParams * _Nonnull)params @@ -19269,28 +19100,28 @@ - (void)subscribeAttributeHourFormatWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TimeFormatLocalization::Attributes::HourFormat::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationClusterHourFormatAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TimeFormatLocalization::Attributes::HourFormat::TypeInfo; - chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeHourFormatWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -19298,8 +19129,9 @@ + (void)readAttributeHourFormatWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TimeFormatLocalizationClusterHourFormatAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TimeFormatLocalization::Attributes::HourFormat::TypeInfo; @@ -19308,9 +19140,8 @@ new MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -19320,14 +19151,15 @@ new MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge( - (void)readAttributeActiveCalendarTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationClusterCalendarTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TimeFormatLocalization::Attributes::ActiveCalendarType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeActiveCalendarTypeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -19342,12 +19174,13 @@ - (void)writeAttributeActiveCalendarTypeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -19359,13 +19192,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TimeFormatLocalization::Attributes::ActiveCalendarType::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveCalendarTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -19375,28 +19206,28 @@ - (void)subscribeAttributeActiveCalendarTypeWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TimeFormatLocalization::Attributes::ActiveCalendarType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationClusterCalendarTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TimeFormatLocalization::Attributes::ActiveCalendarType::TypeInfo; - chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveCalendarTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -19405,8 +19236,9 @@ + (void)readAttributeActiveCalendarTypeWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TimeFormatLocalizationClusterCalendarTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TimeFormatLocalization::Attributes::ActiveCalendarType::TypeInfo; @@ -19415,9 +19247,8 @@ new MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -19427,14 +19258,15 @@ new MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge( - (void)readAttributeSupportedCalendarTypesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationSupportedCalendarTypesListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TimeFormatLocalization::Attributes::SupportedCalendarTypes::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSupportedCalendarTypesWithParams:(MTRSubscribeParams * _Nonnull)params @@ -19444,30 +19276,28 @@ - (void)subscribeAttributeSupportedCalendarTypesWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TimeFormatLocalization::Attributes::SupportedCalendarTypes::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationSupportedCalendarTypesListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TimeFormatLocalization::Attributes::SupportedCalendarTypes::TypeInfo; + + chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSupportedCalendarTypesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -19476,8 +19306,9 @@ + (void)readAttributeSupportedCalendarTypesWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TimeFormatLocalizationSupportedCalendarTypesListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TimeFormatLocalization::Attributes::SupportedCalendarTypes::TypeInfo; @@ -19486,10 +19317,8 @@ new MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -19499,14 +19328,15 @@ new MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge( - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TimeFormatLocalization::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -19516,28 +19346,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TimeFormatLocalization::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TimeFormatLocalization::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -19546,8 +19376,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TimeFormatLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TimeFormatLocalization::Attributes::GeneratedCommandList::TypeInfo; @@ -19556,9 +19387,8 @@ new MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -19568,14 +19398,15 @@ new MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TimeFormatLocalization::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -19585,28 +19416,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TimeFormatLocalization::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TimeFormatLocalization::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -19615,8 +19446,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TimeFormatLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TimeFormatLocalization::Attributes::AcceptedCommandList::TypeInfo; @@ -19625,9 +19457,8 @@ new MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -19637,14 +19468,15 @@ new MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TimeFormatLocalization::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -19653,28 +19485,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TimeFormatLocalization::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TimeFormatLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TimeFormatLocalization::Attributes::AttributeList::TypeInfo; - chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -19682,8 +19514,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TimeFormatLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TimeFormatLocalization::Attributes::AttributeList::TypeInfo; @@ -19692,9 +19525,8 @@ new MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -19704,14 +19536,14 @@ new MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TimeFormatLocalization::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -19720,26 +19552,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TimeFormatLocalization::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -19747,7 +19578,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TimeFormatLocalization::Attributes::FeatureMap::TypeInfo; @@ -19756,9 +19588,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -19768,14 +19599,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TimeFormatLocalization::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -19784,26 +19615,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TimeFormatLocalization::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -19811,7 +19641,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TimeFormatLocalization::Attributes::ClusterRevision::TypeInfo; @@ -19820,9 +19651,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -20158,14 +19988,15 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeTemperatureUnitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UnitLocalizationClusterTempUnitAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = UnitLocalization::Attributes::TemperatureUnit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeTemperatureUnitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -20180,12 +20011,13 @@ - (void)writeAttributeTemperatureUnitWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -20197,13 +20029,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = UnitLocalization::Attributes::TemperatureUnit::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTemperatureUnitWithParams:(MTRSubscribeParams * _Nonnull)params @@ -20212,27 +20042,27 @@ - (void)subscribeAttributeTemperatureUnitWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = UnitLocalization::Attributes::TemperatureUnit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UnitLocalizationClusterTempUnitAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = UnitLocalization::Attributes::TemperatureUnit::TypeInfo; - chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTemperatureUnitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -20240,35 +20070,37 @@ + (void)readAttributeTemperatureUnitWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = UnitLocalization::Attributes::TemperatureUnit::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(UnitLocalizationClusterTempUnitAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = UnitLocalization::Attributes::TemperatureUnit::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UnitLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = UnitLocalization::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -20278,28 +20110,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = UnitLocalization::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UnitLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = UnitLocalization::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -20308,8 +20140,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(UnitLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = UnitLocalization::Attributes::GeneratedCommandList::TypeInfo; @@ -20318,9 +20151,8 @@ new MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -20330,14 +20162,15 @@ new MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UnitLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = UnitLocalization::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -20347,28 +20180,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = UnitLocalization::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UnitLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = UnitLocalization::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -20377,8 +20210,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(UnitLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = UnitLocalization::Attributes::AcceptedCommandList::TypeInfo; @@ -20387,9 +20221,8 @@ new MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -20399,14 +20232,15 @@ new MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUnitLocalizationAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUnitLocalizationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UnitLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = UnitLocalization::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -20415,27 +20249,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = UnitLocalization::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UnitLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = UnitLocalization::Attributes::AttributeList::TypeInfo; - chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -20443,8 +20277,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUnitLocalizationAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUnitLocalizationAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(UnitLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = UnitLocalization::Attributes::AttributeList::TypeInfo; @@ -20453,9 +20288,8 @@ new MTRUnitLocalizationAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -20465,14 +20299,14 @@ new MTRUnitLocalizationAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = UnitLocalization::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -20481,26 +20315,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = UnitLocalization::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -20508,7 +20341,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = UnitLocalization::Attributes::FeatureMap::TypeInfo; @@ -20517,9 +20351,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -20529,14 +20362,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = UnitLocalization::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -20545,26 +20378,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = UnitLocalization::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -20572,7 +20404,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = UnitLocalization::Attributes::ClusterRevision::TypeInfo; @@ -20581,9 +20414,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -20838,14 +20670,15 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeSourcesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceConfigurationSourcesListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSourceConfiguration::Attributes::Sources::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSourcesWithParams:(MTRSubscribeParams * _Nonnull)params @@ -20854,27 +20687,27 @@ - (void)subscribeAttributeSourcesWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSourceConfiguration::Attributes::Sources::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceConfigurationSourcesListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSourceConfiguration::Attributes::Sources::TypeInfo; - chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSourcesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -20882,8 +20715,9 @@ + (void)readAttributeSourcesWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceConfigurationSourcesListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSourceConfiguration::Attributes::Sources::TypeInfo; @@ -20892,9 +20726,8 @@ new MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -20904,14 +20737,15 @@ new MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge( - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSourceConfiguration::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -20921,30 +20755,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSourceConfiguration::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSourceConfiguration::Attributes::GeneratedCommandList::TypeInfo; + + chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -20953,8 +20785,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSourceConfiguration::Attributes::GeneratedCommandList::TypeInfo; @@ -20963,10 +20796,8 @@ new MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -20976,14 +20807,15 @@ new MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSourceConfiguration::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -20993,30 +20825,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSourceConfiguration::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSourceConfiguration::Attributes::AcceptedCommandList::TypeInfo; + + chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21025,8 +20855,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSourceConfiguration::Attributes::AcceptedCommandList::TypeInfo; @@ -21035,10 +20866,8 @@ new MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -21048,14 +20877,15 @@ new MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSourceConfiguration::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -21064,28 +20894,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSourceConfiguration::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSourceConfiguration::Attributes::AttributeList::TypeInfo; - chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21093,8 +20923,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSourceConfiguration::Attributes::AttributeList::TypeInfo; @@ -21103,9 +20934,8 @@ new MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -21115,14 +20945,14 @@ new MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSourceConfiguration::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -21131,26 +20961,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSourceConfiguration::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21158,7 +20987,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSourceConfiguration::Attributes::FeatureMap::TypeInfo; @@ -21167,9 +20997,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -21179,14 +21008,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSourceConfiguration::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -21195,26 +21024,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSourceConfiguration::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21222,7 +21050,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSourceConfiguration::Attributes::ClusterRevision::TypeInfo; @@ -21231,9 +21060,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -21475,14 +21303,15 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceClusterPowerSourceStatusAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::Status::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStatusWithParams:(MTRSubscribeParams * _Nonnull)params @@ -21491,27 +21320,27 @@ - (void)subscribeAttributeStatusWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::Status::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceClusterPowerSourceStatusAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::Status::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21519,8 +21348,9 @@ + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceClusterPowerSourceStatusAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::Status::TypeInfo; @@ -21529,9 +21359,8 @@ new MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -21541,14 +21370,14 @@ new MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge( - (void)readAttributeOrderWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::Order::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOrderWithParams:(MTRSubscribeParams * _Nonnull)params @@ -21557,26 +21386,25 @@ - (void)subscribeAttributeOrderWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::Order::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOrderWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21584,7 +21412,8 @@ + (void)readAttributeOrderWithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::Order::TypeInfo; @@ -21593,9 +21422,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -21605,14 +21433,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeDescriptionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::Description::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -21621,27 +21449,25 @@ - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::Description::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::Description::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21649,7 +21475,8 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::Description::TypeInfo; @@ -21658,9 +21485,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -21671,14 +21497,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeWiredAssessedInputVoltageWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::WiredAssessedInputVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWiredAssessedInputVoltageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -21688,27 +21514,25 @@ - (void)subscribeAttributeWiredAssessedInputVoltageWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::WiredAssessedInputVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::WiredAssessedInputVoltage::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWiredAssessedInputVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21717,7 +21541,8 @@ + (void)readAttributeWiredAssessedInputVoltageWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::WiredAssessedInputVoltage::TypeInfo; @@ -21726,9 +21551,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -21739,14 +21563,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeWiredAssessedInputFrequencyWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::WiredAssessedInputFrequency::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWiredAssessedInputFrequencyWithParams:(MTRSubscribeParams * _Nonnull)params @@ -21756,27 +21580,25 @@ - (void)subscribeAttributeWiredAssessedInputFrequencyWithParams:(MTRSubscribePar { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::WiredAssessedInputFrequency::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::WiredAssessedInputFrequency::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWiredAssessedInputFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21785,7 +21607,8 @@ + (void)readAttributeWiredAssessedInputFrequencyWithAttributeCache:(MTRAttribute completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::WiredAssessedInputFrequency::TypeInfo; @@ -21794,9 +21617,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -21806,14 +21628,15 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeWiredCurrentTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceClusterWiredCurrentTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::WiredCurrentType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWiredCurrentTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -21822,27 +21645,27 @@ - (void)subscribeAttributeWiredCurrentTypeWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::WiredCurrentType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceClusterWiredCurrentTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::WiredCurrentType::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWiredCurrentTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21850,8 +21673,9 @@ + (void)readAttributeWiredCurrentTypeWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceClusterWiredCurrentTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::WiredCurrentType::TypeInfo; @@ -21860,9 +21684,8 @@ new MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -21872,14 +21695,14 @@ new MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge( - (void)readAttributeWiredAssessedCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::WiredAssessedCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWiredAssessedCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -21889,27 +21712,25 @@ - (void)subscribeAttributeWiredAssessedCurrentWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::WiredAssessedCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::WiredAssessedCurrent::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWiredAssessedCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21918,7 +21739,8 @@ + (void)readAttributeWiredAssessedCurrentWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::WiredAssessedCurrent::TypeInfo; @@ -21927,9 +21749,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -21939,14 +21760,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeWiredNominalVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::WiredNominalVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWiredNominalVoltageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -21956,26 +21777,25 @@ - (void)subscribeAttributeWiredNominalVoltageWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::WiredNominalVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWiredNominalVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -21984,7 +21804,8 @@ + (void)readAttributeWiredNominalVoltageWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::WiredNominalVoltage::TypeInfo; @@ -21993,9 +21814,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22005,14 +21825,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeWiredMaximumCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::WiredMaximumCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWiredMaximumCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22022,26 +21842,25 @@ - (void)subscribeAttributeWiredMaximumCurrentWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::WiredMaximumCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWiredMaximumCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22050,7 +21869,8 @@ + (void)readAttributeWiredMaximumCurrentWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::WiredMaximumCurrent::TypeInfo; @@ -22059,9 +21879,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22071,14 +21890,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeWiredPresentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::WiredPresent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWiredPresentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22087,26 +21906,25 @@ - (void)subscribeAttributeWiredPresentWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::WiredPresent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWiredPresentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22114,7 +21932,8 @@ + (void)readAttributeWiredPresentWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::WiredPresent::TypeInfo; @@ -22123,9 +21942,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22135,14 +21953,15 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActiveWiredFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceActiveWiredFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::ActiveWiredFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveWiredFaultsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22151,27 +21970,27 @@ - (void)subscribeAttributeActiveWiredFaultsWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::ActiveWiredFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceActiveWiredFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::ActiveWiredFaults::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveWiredFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22179,8 +21998,9 @@ + (void)readAttributeActiveWiredFaultsWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceActiveWiredFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::ActiveWiredFaults::TypeInfo; @@ -22189,9 +22009,8 @@ new MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22201,14 +22020,14 @@ new MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge( - (void)readAttributeBatVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatVoltageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22217,27 +22036,25 @@ - (void)subscribeAttributeBatVoltageWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::BatVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::BatVoltage::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22245,7 +22062,8 @@ + (void)readAttributeBatVoltageWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatVoltage::TypeInfo; @@ -22254,9 +22072,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22266,14 +22083,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeBatPercentRemainingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatPercentRemaining::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatPercentRemainingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22283,27 +22100,25 @@ - (void)subscribeAttributeBatPercentRemainingWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::BatPercentRemaining::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::BatPercentRemaining::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatPercentRemainingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22312,7 +22127,8 @@ + (void)readAttributeBatPercentRemainingWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatPercentRemaining::TypeInfo; @@ -22321,9 +22137,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22333,14 +22148,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeBatTimeRemainingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatTimeRemaining::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatTimeRemainingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22349,27 +22164,25 @@ - (void)subscribeAttributeBatTimeRemainingWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::BatTimeRemaining::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::BatTimeRemaining::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatTimeRemainingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22377,7 +22190,8 @@ + (void)readAttributeBatTimeRemainingWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatTimeRemaining::TypeInfo; @@ -22386,9 +22200,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22398,14 +22211,15 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeBatChargeLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceClusterBatChargeLevelAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatChargeLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatChargeLevelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22414,27 +22228,27 @@ - (void)subscribeAttributeBatChargeLevelWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::BatChargeLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceClusterBatChargeLevelAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::BatChargeLevel::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatChargeLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22442,8 +22256,9 @@ + (void)readAttributeBatChargeLevelWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceClusterBatChargeLevelAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatChargeLevel::TypeInfo; @@ -22452,9 +22267,8 @@ new MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22464,14 +22278,14 @@ new MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge( - (void)readAttributeBatReplacementNeededWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatReplacementNeeded::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatReplacementNeededWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22481,26 +22295,25 @@ - (void)subscribeAttributeBatReplacementNeededWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::BatReplacementNeeded::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatReplacementNeededWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22509,7 +22322,8 @@ + (void)readAttributeBatReplacementNeededWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatReplacementNeeded::TypeInfo; @@ -22518,9 +22332,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22530,14 +22343,15 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBatReplaceabilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceClusterBatReplaceabilityAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatReplaceability::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatReplaceabilityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22546,27 +22360,27 @@ - (void)subscribeAttributeBatReplaceabilityWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::BatReplaceability::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceClusterBatReplaceabilityAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::BatReplaceability::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatReplaceabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22574,8 +22388,9 @@ + (void)readAttributeBatReplaceabilityWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceClusterBatReplaceabilityAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatReplaceability::TypeInfo; @@ -22584,9 +22399,8 @@ new MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22596,14 +22410,14 @@ new MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge( - (void)readAttributeBatPresentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatPresent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatPresentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22612,26 +22426,25 @@ - (void)subscribeAttributeBatPresentWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::BatPresent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatPresentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22639,7 +22452,8 @@ + (void)readAttributeBatPresentWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatPresent::TypeInfo; @@ -22648,9 +22462,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22660,14 +22473,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActiveBatFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceActiveBatFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::ActiveBatFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveBatFaultsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22676,27 +22489,26 @@ - (void)subscribeAttributeActiveBatFaultsWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::ActiveBatFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceActiveBatFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::ActiveBatFaults::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveBatFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22704,36 +22516,37 @@ + (void)readAttributeActiveBatFaultsWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = PowerSource::Attributes::ActiveBatFaults::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceActiveBatFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = PowerSource::Attributes::ActiveBatFaults::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeBatReplacementDescriptionWithCompletion:(void (^)( NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatReplacementDescription::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatReplacementDescriptionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22743,27 +22556,25 @@ - (void)subscribeAttributeBatReplacementDescriptionWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::BatReplacementDescription::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::BatReplacementDescription::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatReplacementDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22772,7 +22583,8 @@ + (void)readAttributeBatReplacementDescriptionWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatReplacementDescription::TypeInfo; @@ -22781,9 +22593,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22793,14 +22604,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeBatCommonDesignationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatCommonDesignation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatCommonDesignationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22810,26 +22621,25 @@ - (void)subscribeAttributeBatCommonDesignationWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::BatCommonDesignation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatCommonDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22838,7 +22648,8 @@ + (void)readAttributeBatCommonDesignationWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatCommonDesignation::TypeInfo; @@ -22847,9 +22658,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22859,14 +22669,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBatANSIDesignationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatANSIDesignation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatANSIDesignationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22876,27 +22686,25 @@ - (void)subscribeAttributeBatANSIDesignationWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::BatANSIDesignation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::BatANSIDesignation::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatANSIDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22905,7 +22713,8 @@ + (void)readAttributeBatANSIDesignationWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatANSIDesignation::TypeInfo; @@ -22914,9 +22723,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22926,14 +22734,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeBatIECDesignationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatIECDesignation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatIECDesignationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -22942,27 +22750,25 @@ - (void)subscribeAttributeBatIECDesignationWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::BatIECDesignation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::BatIECDesignation::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatIECDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -22970,7 +22776,8 @@ + (void)readAttributeBatIECDesignationWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatIECDesignation::TypeInfo; @@ -22979,9 +22786,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -22991,14 +22797,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeBatApprovedChemistryWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatApprovedChemistry::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatApprovedChemistryWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23008,26 +22814,25 @@ - (void)subscribeAttributeBatApprovedChemistryWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::BatApprovedChemistry::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatApprovedChemistryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23036,7 +22841,8 @@ + (void)readAttributeBatApprovedChemistryWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatApprovedChemistry::TypeInfo; @@ -23045,9 +22851,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23057,14 +22862,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBatCapacityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatCapacity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatCapacityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23073,26 +22878,25 @@ - (void)subscribeAttributeBatCapacityWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::BatCapacity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23100,7 +22904,8 @@ + (void)readAttributeBatCapacityWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatCapacity::TypeInfo; @@ -23109,9 +22914,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23121,14 +22925,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBatQuantityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatQuantity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatQuantityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23137,26 +22941,25 @@ - (void)subscribeAttributeBatQuantityWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::BatQuantity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatQuantityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23164,7 +22967,8 @@ + (void)readAttributeBatQuantityWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatQuantity::TypeInfo; @@ -23173,9 +22977,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23185,14 +22988,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeBatChargeStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceClusterBatChargeStateAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatChargeState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatChargeStateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23201,27 +23005,27 @@ - (void)subscribeAttributeBatChargeStateWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::BatChargeState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceClusterBatChargeStateAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::BatChargeState::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatChargeStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23229,8 +23033,9 @@ + (void)readAttributeBatChargeStateWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceClusterBatChargeStateAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatChargeState::TypeInfo; @@ -23239,9 +23044,8 @@ new MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23251,14 +23055,14 @@ new MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge( - (void)readAttributeBatTimeToFullChargeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatTimeToFullCharge::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatTimeToFullChargeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23268,27 +23072,25 @@ - (void)subscribeAttributeBatTimeToFullChargeWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::BatTimeToFullCharge::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::BatTimeToFullCharge::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatTimeToFullChargeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23297,7 +23099,8 @@ + (void)readAttributeBatTimeToFullChargeWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatTimeToFullCharge::TypeInfo; @@ -23306,9 +23109,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23319,14 +23121,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeBatFunctionalWhileChargingWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatFunctionalWhileCharging::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatFunctionalWhileChargingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23336,26 +23138,25 @@ - (void)subscribeAttributeBatFunctionalWhileChargingWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::BatFunctionalWhileCharging::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatFunctionalWhileChargingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23364,7 +23165,8 @@ + (void)readAttributeBatFunctionalWhileChargingWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatFunctionalWhileCharging::TypeInfo; @@ -23373,9 +23175,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23385,14 +23186,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBatChargingCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::BatChargingCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBatChargingCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23402,27 +23203,25 @@ - (void)subscribeAttributeBatChargingCurrentWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::BatChargingCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::BatChargingCurrent::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBatChargingCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23431,7 +23230,8 @@ + (void)readAttributeBatChargingCurrentWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::BatChargingCurrent::TypeInfo; @@ -23440,9 +23240,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23452,14 +23251,15 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeActiveBatChargeFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceActiveBatChargeFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::ActiveBatChargeFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveBatChargeFaultsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23469,27 +23269,27 @@ - (void)subscribeAttributeActiveBatChargeFaultsWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::ActiveBatChargeFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceActiveBatChargeFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::ActiveBatChargeFaults::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveBatChargeFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23498,8 +23298,9 @@ + (void)readAttributeActiveBatChargeFaultsWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceActiveBatChargeFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::ActiveBatChargeFaults::TypeInfo; @@ -23508,9 +23309,8 @@ new MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23520,14 +23320,15 @@ new MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge( - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23537,27 +23338,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23566,8 +23367,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::GeneratedCommandList::TypeInfo; @@ -23576,9 +23378,8 @@ new MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23588,14 +23389,15 @@ new MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23605,27 +23407,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PowerSourceAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23634,8 +23436,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PowerSourceAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::AcceptedCommandList::TypeInfo; @@ -23644,9 +23447,8 @@ new MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23656,14 +23458,14 @@ new MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, PowerSourceAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23672,27 +23474,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PowerSource::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, PowerSourceAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PowerSource::Attributes::AttributeList::TypeInfo; - chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23700,7 +23501,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPowerSourceAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPowerSourceAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(PowerSourceAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::AttributeList::TypeInfo; @@ -23709,9 +23511,8 @@ new MTRPowerSourceAttributeListListAttributeCallbackBridge(queue, completion, ^( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23721,14 +23522,14 @@ new MTRPowerSourceAttributeListListAttributeCallbackBridge(queue, completion, ^( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23737,26 +23538,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23764,7 +23564,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::FeatureMap::TypeInfo; @@ -23773,9 +23574,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -23785,14 +23585,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PowerSource::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -23801,26 +23601,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PowerSource::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -23828,7 +23627,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PowerSource::Attributes::ClusterRevision::TypeInfo; @@ -23837,9 +23637,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -25135,8 +24934,10 @@ - (void)armFailSafeWithParams:(MTRGeneralCommissioningClusterArmFailSafeParams * { // Make a copy of params before we go async. params = [params copy]; - new MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningClusterArmFailSafeResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GeneralCommissioning::Commands::ArmFailSafe::Type request; @@ -25148,11 +24949,10 @@ new MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(self.callbac request.expiryLengthSeconds = params.expiryLengthSeconds.unsignedShortValue; request.breadcrumb = params.breadcrumb.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)setRegulatoryConfigWithParams:(MTRGeneralCommissioningClusterSetRegulatoryConfigParams *)params @@ -25161,8 +24961,10 @@ - (void)setRegulatoryConfigWithParams:(MTRGeneralCommissioningClusterSetRegulato { // Make a copy of params before we go async. params = [params copy]; - new MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningClusterSetRegulatoryConfigResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GeneralCommissioning::Commands::SetRegulatoryConfig::Type request; @@ -25176,11 +24978,10 @@ new MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(self request.countryCode = [self asCharSpan:params.countryCode]; request.breadcrumb = params.breadcrumb.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)commissioningCompleteWithCompletion:(void (^)( @@ -25196,8 +24997,10 @@ - (void)commissioningCompleteWithParams:(MTRGeneralCommissioningClusterCommissio { // Make a copy of params before we go async. params = [params copy]; - new MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningClusterCommissioningCompleteResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GeneralCommissioning::Commands::CommissioningComplete::Type request; @@ -25207,24 +25010,22 @@ new MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(se } } - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeBreadcrumbWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralCommissioning::Attributes::Breadcrumb::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBreadcrumbWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -25239,12 +25040,13 @@ - (void)writeAttributeBreadcrumbWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -25256,13 +25058,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = GeneralCommissioning::Attributes::Breadcrumb::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBreadcrumbWithParams:(MTRSubscribeParams * _Nonnull)params @@ -25271,26 +25071,25 @@ - (void)subscribeAttributeBreadcrumbWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GeneralCommissioning::Attributes::Breadcrumb::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBreadcrumbWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -25298,7 +25097,8 @@ + (void)readAttributeBreadcrumbWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralCommissioning::Attributes::Breadcrumb::TypeInfo; @@ -25307,9 +25107,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -25320,14 +25119,15 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBasicCommissioningInfoWithCompletion: (void (^)(MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningBasicCommissioningInfoStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralCommissioning::Attributes::BasicCommissioningInfo::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBasicCommissioningInfoWithParams:(MTRSubscribeParams * _Nonnull)params @@ -25338,30 +25138,28 @@ - (void)subscribeAttributeBasicCommissioningInfoWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralCommissioning::Attributes::BasicCommissioningInfo::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningBasicCommissioningInfoStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralCommissioning::Attributes::BasicCommissioningInfo::TypeInfo; + + chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBasicCommissioningInfoWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -25372,8 +25170,9 @@ + (void)readAttributeBasicCommissioningInfoWithAttributeCache:(MTRAttributeCache MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralCommissioningBasicCommissioningInfoStructAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralCommissioning::Attributes::BasicCommissioningInfo::TypeInfo; @@ -25382,10 +25181,8 @@ new MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -25395,14 +25192,15 @@ new MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge( - (void)readAttributeRegulatoryConfigWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralCommissioning::Attributes::RegulatoryConfig::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRegulatoryConfigWithParams:(MTRSubscribeParams * _Nonnull)params @@ -25411,30 +25209,28 @@ - (void)subscribeAttributeRegulatoryConfigWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralCommissioning::Attributes::RegulatoryConfig::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralCommissioning::Attributes::RegulatoryConfig::TypeInfo; + + chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRegulatoryConfigWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -25442,8 +25238,9 @@ + (void)readAttributeRegulatoryConfigWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralCommissioning::Attributes::RegulatoryConfig::TypeInfo; @@ -25452,10 +25249,8 @@ new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -25465,14 +25260,15 @@ new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge( - (void)readAttributeLocationCapabilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralCommissioning::Attributes::LocationCapability::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLocationCapabilityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -25482,30 +25278,28 @@ - (void)subscribeAttributeLocationCapabilityWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralCommissioning::Attributes::LocationCapability::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralCommissioning::Attributes::LocationCapability::TypeInfo; + + chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLocationCapabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -25514,8 +25308,9 @@ + (void)readAttributeLocationCapabilityWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralCommissioning::Attributes::LocationCapability::TypeInfo; @@ -25524,10 +25319,8 @@ new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -25538,14 +25331,14 @@ new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge( - (void)readAttributeSupportsConcurrentConnectionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralCommissioning::Attributes::SupportsConcurrentConnection::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSupportsConcurrentConnectionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -25556,26 +25349,25 @@ - (void)subscribeAttributeSupportsConcurrentConnectionWithParams:(MTRSubscribePa { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GeneralCommissioning::Attributes::SupportsConcurrentConnection::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSupportsConcurrentConnectionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -25584,7 +25376,8 @@ + (void)readAttributeSupportsConcurrentConnectionWithAttributeCache:(MTRAttribut completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralCommissioning::Attributes::SupportsConcurrentConnection::TypeInfo; @@ -25593,9 +25386,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -25605,14 +25397,15 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralCommissioning::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -25622,28 +25415,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralCommissioning::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralCommissioning::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -25652,8 +25445,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralCommissioning::Attributes::GeneratedCommandList::TypeInfo; @@ -25662,9 +25456,8 @@ new MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -25674,14 +25467,15 @@ new MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralCommissioning::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -25691,28 +25485,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralCommissioning::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralCommissioning::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -25721,8 +25515,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralCommissioning::Attributes::AcceptedCommandList::TypeInfo; @@ -25731,9 +25526,8 @@ new MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -25743,14 +25537,15 @@ new MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralCommissioning::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -25759,27 +25554,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralCommissioning::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralCommissioning::Attributes::AttributeList::TypeInfo; - chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -25787,8 +25582,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralCommissioningAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralCommissioning::Attributes::AttributeList::TypeInfo; @@ -25797,9 +25593,8 @@ new MTRGeneralCommissioningAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -25809,14 +25604,14 @@ new MTRGeneralCommissioningAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralCommissioning::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -25825,26 +25620,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GeneralCommissioning::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -25852,7 +25646,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralCommissioning::Attributes::FeatureMap::TypeInfo; @@ -25861,9 +25656,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -25873,14 +25667,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralCommissioning::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -25889,26 +25683,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GeneralCommissioning::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -25916,7 +25709,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralCommissioning::Attributes::ClusterRevision::TypeInfo; @@ -25925,9 +25719,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -26356,8 +26149,10 @@ - (void)scanNetworksWithParams:(MTRNetworkCommissioningClusterScanNetworksParams { // Make a copy of params before we go async. params = [params copy]; - new MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterScanNetworksResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::ScanNetworks::Type request; @@ -26382,11 +26177,10 @@ new MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(self.callba } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)addOrUpdateWiFiNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams *)params @@ -26395,8 +26189,10 @@ - (void)addOrUpdateWiFiNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpd { // Make a copy of params before we go async. params = [params copy]; - new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::AddOrUpdateWiFiNetwork::Type request; @@ -26412,11 +26208,10 @@ new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callb definedValue_0 = params.breadcrumb.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)addOrUpdateThreadNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams *)params @@ -26425,8 +26220,10 @@ - (void)addOrUpdateThreadNetworkWithParams:(MTRNetworkCommissioningClusterAddOrU { // Make a copy of params before we go async. params = [params copy]; - new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::AddOrUpdateThreadNetwork::Type request; @@ -26441,11 +26238,10 @@ new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callb definedValue_0 = params.breadcrumb.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)removeNetworkWithParams:(MTRNetworkCommissioningClusterRemoveNetworkParams *)params @@ -26454,8 +26250,10 @@ - (void)removeNetworkWithParams:(MTRNetworkCommissioningClusterRemoveNetworkPara { // Make a copy of params before we go async. params = [params copy]; - new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::RemoveNetwork::Type request; @@ -26470,11 +26268,10 @@ new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callb definedValue_0 = params.breadcrumb.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)connectNetworkWithParams:(MTRNetworkCommissioningClusterConnectNetworkParams *)params @@ -26483,8 +26280,10 @@ - (void)connectNetworkWithParams:(MTRNetworkCommissioningClusterConnectNetworkPa { // Make a copy of params before we go async. params = [params copy]; - new MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterConnectNetworkResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::ConnectNetwork::Type request; @@ -26499,11 +26298,10 @@ new MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(self.call definedValue_0 = params.breadcrumb.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)reorderNetworkWithParams:(MTRNetworkCommissioningClusterReorderNetworkParams *)params @@ -26512,8 +26310,10 @@ - (void)reorderNetworkWithParams:(MTRNetworkCommissioningClusterReorderNetworkPa { // Make a copy of params before we go async. params = [params copy]; - new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::ReorderNetwork::Type request; @@ -26529,23 +26329,22 @@ new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callb definedValue_0 = params.breadcrumb.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeMaxNetworksWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::MaxNetworks::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxNetworksWithParams:(MTRSubscribeParams * _Nonnull)params @@ -26554,26 +26353,25 @@ - (void)subscribeAttributeMaxNetworksWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = NetworkCommissioning::Attributes::MaxNetworks::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxNetworksWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -26581,7 +26379,8 @@ + (void)readAttributeMaxNetworksWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::MaxNetworks::TypeInfo; @@ -26590,9 +26389,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -26602,14 +26400,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeNetworksWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRNetworkCommissioningNetworksListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningNetworksListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningNetworksListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::Networks::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNetworksWithParams:(MTRSubscribeParams * _Nonnull)params @@ -26618,27 +26417,27 @@ - (void)subscribeAttributeNetworksWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = NetworkCommissioning::Attributes::Networks::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningNetworksListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = NetworkCommissioning::Attributes::Networks::TypeInfo; - chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNetworksWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -26646,8 +26445,9 @@ + (void)readAttributeNetworksWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRNetworkCommissioningNetworksListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningNetworksListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NetworkCommissioningNetworksListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::Networks::TypeInfo; @@ -26656,9 +26456,8 @@ new MTRNetworkCommissioningNetworksListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -26668,14 +26467,14 @@ new MTRNetworkCommissioningNetworksListAttributeCallbackBridge( - (void)readAttributeScanMaxTimeSecondsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::ScanMaxTimeSeconds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeScanMaxTimeSecondsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -26685,26 +26484,25 @@ - (void)subscribeAttributeScanMaxTimeSecondsWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = NetworkCommissioning::Attributes::ScanMaxTimeSeconds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeScanMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -26713,7 +26511,8 @@ + (void)readAttributeScanMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::ScanMaxTimeSeconds::TypeInfo; @@ -26722,9 +26521,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -26734,14 +26532,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeConnectMaxTimeSecondsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::ConnectMaxTimeSeconds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeConnectMaxTimeSecondsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -26751,26 +26549,25 @@ - (void)subscribeAttributeConnectMaxTimeSecondsWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = NetworkCommissioning::Attributes::ConnectMaxTimeSeconds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeConnectMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -26779,7 +26576,8 @@ + (void)readAttributeConnectMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::ConnectMaxTimeSeconds::TypeInfo; @@ -26788,9 +26586,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -26800,14 +26597,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeInterfaceEnabledWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::InterfaceEnabled::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInterfaceEnabledWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -26822,12 +26619,13 @@ - (void)writeAttributeInterfaceEnabledWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -26839,13 +26637,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = NetworkCommissioning::Attributes::InterfaceEnabled::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInterfaceEnabledWithParams:(MTRSubscribeParams * _Nonnull)params @@ -26854,26 +26650,25 @@ - (void)subscribeAttributeInterfaceEnabledWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = NetworkCommissioning::Attributes::InterfaceEnabled::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInterfaceEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -26881,7 +26676,8 @@ + (void)readAttributeInterfaceEnabledWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::InterfaceEnabled::TypeInfo; @@ -26890,9 +26686,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -26902,16 +26697,16 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeLastNetworkingStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(self.callbackQueue, self.device, + auto * bridge = new MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(self.callbackQueue, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::LastNetworkingStatus::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLastNetworkingStatusWithParams:(MTRSubscribeParams * _Nonnull)params @@ -26921,32 +26716,29 @@ - (void)subscribeAttributeLastNetworkingStatusWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = NetworkCommissioning::Attributes::LastNetworkingStatus::TypeInfo; - auto successFn - = Callback::FromCancelable( - success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge * - innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast< + MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge *>(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = NetworkCommissioning::Attributes::LastNetworkingStatus::TypeInfo; + + chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLastNetworkingStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -26955,8 +26747,9 @@ + (void)readAttributeLastNetworkingStatusWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::LastNetworkingStatus::TypeInfo; @@ -26965,11 +26758,8 @@ new MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCal path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable( - success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -26979,14 +26769,14 @@ new MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCal - (void)readAttributeLastNetworkIDWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::LastNetworkID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLastNetworkIDWithParams:(MTRSubscribeParams * _Nonnull)params @@ -26995,27 +26785,25 @@ - (void)subscribeAttributeLastNetworkIDWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableOctetStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = NetworkCommissioning::Attributes::LastNetworkID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = NetworkCommissioning::Attributes::LastNetworkID::TypeInfo; - chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableOctetStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLastNetworkIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -27023,7 +26811,8 @@ + (void)readAttributeLastNetworkIDWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableOctetStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::LastNetworkID::TypeInfo; @@ -27032,9 +26821,8 @@ new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelabl path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -27044,14 +26832,14 @@ new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelabl - (void)readAttributeLastConnectErrorValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::LastConnectErrorValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLastConnectErrorValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -27061,27 +26849,25 @@ - (void)subscribeAttributeLastConnectErrorValueWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = NetworkCommissioning::Attributes::LastConnectErrorValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = NetworkCommissioning::Attributes::LastConnectErrorValue::TypeInfo; - chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLastConnectErrorValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -27090,7 +26876,8 @@ + (void)readAttributeLastConnectErrorValueWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::LastConnectErrorValue::TypeInfo; @@ -27099,9 +26886,8 @@ new MTRNullableInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -27111,14 +26897,15 @@ new MTRNullableInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -27128,28 +26915,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = NetworkCommissioning::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = NetworkCommissioning::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -27158,8 +26945,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NetworkCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::GeneratedCommandList::TypeInfo; @@ -27168,9 +26956,8 @@ new MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -27180,14 +26967,15 @@ new MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -27197,28 +26985,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = NetworkCommissioning::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = NetworkCommissioning::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -27227,8 +27015,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NetworkCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::AcceptedCommandList::TypeInfo; @@ -27237,9 +27026,8 @@ new MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -27249,14 +27037,15 @@ new MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -27265,27 +27054,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = NetworkCommissioning::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = NetworkCommissioning::Attributes::AttributeList::TypeInfo; - chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -27293,8 +27082,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRNetworkCommissioningAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NetworkCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::AttributeList::TypeInfo; @@ -27303,9 +27093,8 @@ new MTRNetworkCommissioningAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -27315,14 +27104,14 @@ new MTRNetworkCommissioningAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -27331,26 +27120,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = NetworkCommissioning::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -27358,7 +27146,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::FeatureMap::TypeInfo; @@ -27367,9 +27156,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -27379,14 +27167,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = NetworkCommissioning::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -27395,26 +27183,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = NetworkCommissioning::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -27422,7 +27209,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = NetworkCommissioning::Attributes::ClusterRevision::TypeInfo; @@ -27431,9 +27219,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -27973,8 +27760,10 @@ - (void)retrieveLogsRequestWithParams:(MTRDiagnosticLogsClusterRetrieveLogsReque { // Make a copy of params before we go async. params = [params copy]; - new MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DiagnosticLogsClusterRetrieveLogsResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DiagnosticLogs::Commands::RetrieveLogsRequest::Type request; @@ -27988,23 +27777,23 @@ new MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(self.callbackQueu params.requestedProtocol.unsignedCharValue); request.transferFileDesignator = [self asByteSpan:params.transferFileDesignator]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DiagnosticLogsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = DiagnosticLogs::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28014,27 +27803,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DiagnosticLogs::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DiagnosticLogsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DiagnosticLogs::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -28043,8 +27833,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DiagnosticLogsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DiagnosticLogs::Attributes::GeneratedCommandList::TypeInfo; @@ -28053,9 +27844,8 @@ new MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -28065,14 +27855,15 @@ new MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DiagnosticLogsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = DiagnosticLogs::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28082,27 +27873,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DiagnosticLogs::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DiagnosticLogsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DiagnosticLogs::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -28111,8 +27902,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DiagnosticLogsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DiagnosticLogs::Attributes::AcceptedCommandList::TypeInfo; @@ -28121,9 +27913,8 @@ new MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -28133,14 +27924,15 @@ new MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DiagnosticLogsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = DiagnosticLogs::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28149,27 +27941,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DiagnosticLogs::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DiagnosticLogsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DiagnosticLogs::Attributes::AttributeList::TypeInfo; - chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -28177,35 +27969,36 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = DiagnosticLogs::Attributes::AttributeList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DiagnosticLogsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = DiagnosticLogs::Attributes::AttributeList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DiagnosticLogs::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28214,26 +28007,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DiagnosticLogs::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -28241,7 +28033,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DiagnosticLogs::Attributes::FeatureMap::TypeInfo; @@ -28250,9 +28043,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -28262,14 +28054,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DiagnosticLogs::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28278,26 +28070,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DiagnosticLogs::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -28305,7 +28096,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DiagnosticLogs::Attributes::ClusterRevision::TypeInfo; @@ -28314,9 +28106,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -28536,12 +28327,13 @@ - (void)testEventTriggerWithParams:(MTRGeneralDiagnosticsClusterTestEventTrigger { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GeneralDiagnostics::Commands::TestEventTrigger::Type request; @@ -28553,23 +28345,23 @@ new MTRCommandSuccessCallbackBridge( request.enableKey = [self asByteSpan:params.enableKey]; request.eventTrigger = params.eventTrigger.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeNetworkInterfacesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsNetworkInterfacesListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::NetworkInterfaces::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNetworkInterfacesWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28578,28 +28370,28 @@ - (void)subscribeAttributeNetworkInterfacesWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralDiagnostics::Attributes::NetworkInterfaces::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsNetworkInterfacesListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralDiagnostics::Attributes::NetworkInterfaces::TypeInfo; - chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNetworkInterfacesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -28607,8 +28399,9 @@ + (void)readAttributeNetworkInterfacesWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralDiagnosticsNetworkInterfacesListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::NetworkInterfaces::TypeInfo; @@ -28617,9 +28410,8 @@ new MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -28629,14 +28421,14 @@ new MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge( - (void)readAttributeRebootCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::RebootCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRebootCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28645,26 +28437,25 @@ - (void)subscribeAttributeRebootCountWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GeneralDiagnostics::Attributes::RebootCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRebootCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -28672,7 +28463,8 @@ + (void)readAttributeRebootCountWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::RebootCount::TypeInfo; @@ -28681,9 +28473,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -28693,14 +28484,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeUpTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::UpTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUpTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28709,26 +28500,25 @@ - (void)subscribeAttributeUpTimeWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GeneralDiagnostics::Attributes::UpTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUpTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -28736,7 +28526,8 @@ + (void)readAttributeUpTimeWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::UpTime::TypeInfo; @@ -28745,9 +28536,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -28757,14 +28547,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTotalOperationalHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::TotalOperationalHours::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTotalOperationalHoursWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28774,26 +28564,25 @@ - (void)subscribeAttributeTotalOperationalHoursWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GeneralDiagnostics::Attributes::TotalOperationalHours::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTotalOperationalHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -28802,7 +28591,8 @@ + (void)readAttributeTotalOperationalHoursWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::TotalOperationalHours::TypeInfo; @@ -28811,9 +28601,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -28823,14 +28612,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBootReasonsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::BootReasons::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBootReasonsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28839,26 +28628,25 @@ - (void)subscribeAttributeBootReasonsWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GeneralDiagnostics::Attributes::BootReasons::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBootReasonsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -28866,7 +28654,8 @@ + (void)readAttributeBootReasonsWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::BootReasons::TypeInfo; @@ -28875,9 +28664,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -28887,14 +28675,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeActiveHardwareFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsActiveHardwareFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::ActiveHardwareFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveHardwareFaultsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28904,28 +28693,28 @@ - (void)subscribeAttributeActiveHardwareFaultsWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralDiagnostics::Attributes::ActiveHardwareFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsActiveHardwareFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralDiagnostics::Attributes::ActiveHardwareFaults::TypeInfo; - chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveHardwareFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -28934,8 +28723,9 @@ + (void)readAttributeActiveHardwareFaultsWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralDiagnosticsActiveHardwareFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::ActiveHardwareFaults::TypeInfo; @@ -28944,9 +28734,8 @@ new MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -28956,14 +28745,15 @@ new MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge( - (void)readAttributeActiveRadioFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsActiveRadioFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::ActiveRadioFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveRadioFaultsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -28972,28 +28762,28 @@ - (void)subscribeAttributeActiveRadioFaultsWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralDiagnostics::Attributes::ActiveRadioFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsActiveRadioFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralDiagnostics::Attributes::ActiveRadioFaults::TypeInfo; - chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveRadioFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -29001,8 +28791,9 @@ + (void)readAttributeActiveRadioFaultsWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralDiagnosticsActiveRadioFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::ActiveRadioFaults::TypeInfo; @@ -29011,9 +28802,8 @@ new MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -29023,14 +28813,15 @@ new MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge( - (void)readAttributeActiveNetworkFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsActiveNetworkFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::ActiveNetworkFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveNetworkFaultsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -29040,28 +28831,28 @@ - (void)subscribeAttributeActiveNetworkFaultsWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralDiagnostics::Attributes::ActiveNetworkFaults::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsActiveNetworkFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralDiagnostics::Attributes::ActiveNetworkFaults::TypeInfo; - chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveNetworkFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -29070,8 +28861,9 @@ + (void)readAttributeActiveNetworkFaultsWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralDiagnosticsActiveNetworkFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::ActiveNetworkFaults::TypeInfo; @@ -29080,9 +28872,8 @@ new MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -29093,14 +28884,14 @@ new MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge( - (void)readAttributeTestEventTriggersEnabledWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::TestEventTriggersEnabled::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTestEventTriggersEnabledWithParams:(MTRSubscribeParams * _Nonnull)params @@ -29110,26 +28901,25 @@ - (void)subscribeAttributeTestEventTriggersEnabledWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GeneralDiagnostics::Attributes::TestEventTriggersEnabled::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTestEventTriggersEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -29138,7 +28928,8 @@ + (void)readAttributeTestEventTriggersEnabledWithAttributeCache:(MTRAttributeCac completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::TestEventTriggersEnabled::TypeInfo; @@ -29147,9 +28938,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -29159,14 +28949,15 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -29176,28 +28967,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -29206,8 +28997,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::GeneratedCommandList::TypeInfo; @@ -29216,9 +29008,8 @@ new MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -29228,14 +29019,15 @@ new MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -29245,28 +29037,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -29275,8 +29067,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::AcceptedCommandList::TypeInfo; @@ -29285,9 +29078,8 @@ new MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -29297,14 +29089,15 @@ new MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -29313,27 +29106,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GeneralDiagnostics::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GeneralDiagnostics::Attributes::AttributeList::TypeInfo; - chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -29341,8 +29134,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GeneralDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::AttributeList::TypeInfo; @@ -29351,9 +29145,8 @@ new MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -29363,14 +29156,14 @@ new MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -29379,26 +29172,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GeneralDiagnostics::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -29406,7 +29198,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::FeatureMap::TypeInfo; @@ -29415,9 +29208,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -29427,14 +29219,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GeneralDiagnostics::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -29443,26 +29235,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GeneralDiagnostics::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -29470,7 +29261,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GeneralDiagnostics::Attributes::ClusterRevision::TypeInfo; @@ -29479,9 +29271,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -30015,12 +29806,13 @@ - (void)resetWatermarksWithParams:(MTRSoftwareDiagnosticsClusterResetWatermarksP { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; SoftwareDiagnostics::Commands::ResetWatermarks::Type request; @@ -30030,23 +29822,23 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeThreadMetricsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SoftwareDiagnosticsThreadMetricsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = SoftwareDiagnostics::Attributes::ThreadMetrics::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeThreadMetricsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -30055,27 +29847,27 @@ - (void)subscribeAttributeThreadMetricsWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = SoftwareDiagnostics::Attributes::ThreadMetrics::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SoftwareDiagnosticsThreadMetricsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = SoftwareDiagnostics::Attributes::ThreadMetrics::TypeInfo; - chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeThreadMetricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -30083,8 +29875,9 @@ + (void)readAttributeThreadMetricsWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(SoftwareDiagnosticsThreadMetricsListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = SoftwareDiagnostics::Attributes::ThreadMetrics::TypeInfo; @@ -30093,9 +29886,8 @@ new MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -30105,14 +29897,14 @@ new MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge( - (void)readAttributeCurrentHeapFreeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapFree::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentHeapFreeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -30121,26 +29913,25 @@ - (void)subscribeAttributeCurrentHeapFreeWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapFree::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentHeapFreeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -30148,7 +29939,8 @@ + (void)readAttributeCurrentHeapFreeWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapFree::TypeInfo; @@ -30157,9 +29949,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -30169,14 +29960,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeCurrentHeapUsedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapUsed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentHeapUsedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -30185,26 +29976,25 @@ - (void)subscribeAttributeCurrentHeapUsedWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapUsed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentHeapUsedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -30212,7 +30002,8 @@ + (void)readAttributeCurrentHeapUsedWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapUsed::TypeInfo; @@ -30221,9 +30012,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -30234,14 +30024,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeCurrentHeapHighWatermarkWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapHighWatermark::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentHeapHighWatermarkWithParams:(MTRSubscribeParams * _Nonnull)params @@ -30251,26 +30041,25 @@ - (void)subscribeAttributeCurrentHeapHighWatermarkWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapHighWatermark::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentHeapHighWatermarkWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -30279,7 +30068,8 @@ + (void)readAttributeCurrentHeapHighWatermarkWithAttributeCache:(MTRAttributeCac completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapHighWatermark::TypeInfo; @@ -30288,9 +30078,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -30300,14 +30089,15 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SoftwareDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = SoftwareDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -30317,28 +30107,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = SoftwareDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SoftwareDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = SoftwareDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -30347,8 +30137,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(SoftwareDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = SoftwareDiagnostics::Attributes::GeneratedCommandList::TypeInfo; @@ -30357,9 +30148,8 @@ new MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -30369,14 +30159,15 @@ new MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SoftwareDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = SoftwareDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -30386,28 +30177,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = SoftwareDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SoftwareDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = SoftwareDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -30416,8 +30207,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(SoftwareDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = SoftwareDiagnostics::Attributes::AcceptedCommandList::TypeInfo; @@ -30426,9 +30218,8 @@ new MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -30438,14 +30229,15 @@ new MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SoftwareDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = SoftwareDiagnostics::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -30454,27 +30246,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = SoftwareDiagnostics::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SoftwareDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = SoftwareDiagnostics::Attributes::AttributeList::TypeInfo; - chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -30482,8 +30274,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(SoftwareDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = SoftwareDiagnostics::Attributes::AttributeList::TypeInfo; @@ -30492,9 +30285,8 @@ new MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -30504,14 +30296,14 @@ new MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = SoftwareDiagnostics::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -30520,26 +30312,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = SoftwareDiagnostics::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -30547,7 +30338,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = SoftwareDiagnostics::Attributes::FeatureMap::TypeInfo; @@ -30556,9 +30348,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -30568,14 +30359,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = SoftwareDiagnostics::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -30584,26 +30375,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = SoftwareDiagnostics::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -30611,7 +30401,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = SoftwareDiagnostics::Attributes::ClusterRevision::TypeInfo; @@ -30620,9 +30411,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -30989,12 +30779,13 @@ - (void)resetCountsWithParams:(MTRThreadNetworkDiagnosticsClusterResetCountsPara { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ThreadNetworkDiagnostics::Commands::ResetCounts::Type request; @@ -31004,23 +30795,22 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeChannelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeChannelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31029,27 +30819,25 @@ - (void)subscribeAttributeChannelWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeChannelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31057,7 +30845,8 @@ + (void)readAttributeChannelWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo; @@ -31066,9 +30855,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31078,14 +30866,15 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeRoutingRoleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRoutingRoleWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31094,30 +30883,28 @@ - (void)subscribeAttributeRoutingRoleWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRoutingRoleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31125,8 +30912,9 @@ + (void)readAttributeRoutingRoleWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo; @@ -31135,10 +30923,8 @@ new MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31148,14 +30934,14 @@ new MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge - (void)readAttributeNetworkNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableCharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNetworkNameWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31164,27 +30950,25 @@ - (void)subscribeAttributeNetworkNameWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableCharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNetworkNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31192,7 +30976,8 @@ + (void)readAttributeNetworkNameWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableCharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo; @@ -31201,9 +30986,8 @@ new MTRNullableCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31213,14 +30997,14 @@ new MTRNullableCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable - (void)readAttributePanIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePanIdWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31229,27 +31013,25 @@ - (void)subscribeAttributePanIdWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePanIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31257,7 +31039,8 @@ + (void)readAttributePanIdWithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo; @@ -31266,9 +31049,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31278,14 +31060,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeExtendedPanIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeExtendedPanIdWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31294,27 +31076,25 @@ - (void)subscribeAttributeExtendedPanIdWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeExtendedPanIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31322,7 +31102,8 @@ + (void)readAttributeExtendedPanIdWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo; @@ -31331,9 +31112,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31343,14 +31123,14 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMeshLocalPrefixWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeshLocalPrefixWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31359,27 +31139,25 @@ - (void)subscribeAttributeMeshLocalPrefixWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableOctetStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableOctetStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeshLocalPrefixWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31387,7 +31165,8 @@ + (void)readAttributeMeshLocalPrefixWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableOctetStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo; @@ -31396,9 +31175,8 @@ new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelabl path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31408,14 +31186,14 @@ new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelabl - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::OverrunCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31424,26 +31202,25 @@ - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::OverrunCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31451,7 +31228,8 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::OverrunCount::TypeInfo; @@ -31460,9 +31238,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31472,14 +31249,15 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeNeighborTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsNeighborTableListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNeighborTableListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31488,28 +31266,28 @@ - (void)subscribeAttributeNeighborTableListWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsNeighborTableListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31517,8 +31295,9 @@ + (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThreadNetworkDiagnosticsNeighborTableListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo; @@ -31527,9 +31306,8 @@ new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31539,14 +31317,15 @@ new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge( - (void)readAttributeRouteTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsRouteTableListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRouteTableListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31555,28 +31334,28 @@ - (void)subscribeAttributeRouteTableListWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsRouteTableListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31584,8 +31363,9 @@ + (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThreadNetworkDiagnosticsRouteTableListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo; @@ -31594,9 +31374,8 @@ new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31606,14 +31385,14 @@ new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge( - (void)readAttributePartitionIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePartitionIdWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31622,27 +31401,25 @@ - (void)subscribeAttributePartitionIdWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionId::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePartitionIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31650,7 +31427,8 @@ + (void)readAttributePartitionIdWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionId::TypeInfo; @@ -31659,9 +31437,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31671,14 +31448,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeWeightingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::Weighting::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWeightingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31687,27 +31464,25 @@ - (void)subscribeAttributeWeightingWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::Weighting::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::Weighting::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWeightingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31715,7 +31490,8 @@ + (void)readAttributeWeightingWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::Weighting::TypeInfo; @@ -31724,9 +31500,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31736,14 +31511,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeDataVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::DataVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDataVersionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31752,27 +31527,25 @@ - (void)subscribeAttributeDataVersionWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::DataVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::DataVersion::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDataVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31780,7 +31553,8 @@ + (void)readAttributeDataVersionWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::DataVersion::TypeInfo; @@ -31789,9 +31563,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31801,14 +31574,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeStableDataVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::StableDataVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStableDataVersionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31817,27 +31590,25 @@ - (void)subscribeAttributeStableDataVersionWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::StableDataVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::StableDataVersion::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStableDataVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31845,7 +31616,8 @@ + (void)readAttributeStableDataVersionWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::StableDataVersion::TypeInfo; @@ -31854,9 +31626,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31866,14 +31637,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeLeaderRouterIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRouterId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLeaderRouterIdWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31882,27 +31653,25 @@ - (void)subscribeAttributeLeaderRouterIdWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRouterId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRouterId::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLeaderRouterIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31910,7 +31679,8 @@ + (void)readAttributeLeaderRouterIdWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRouterId::TypeInfo; @@ -31919,9 +31689,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31931,14 +31700,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeDetachedRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDetachedRoleCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -31947,26 +31716,25 @@ - (void)subscribeAttributeDetachedRoleCountWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDetachedRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -31974,7 +31742,8 @@ + (void)readAttributeDetachedRoleCountWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::TypeInfo; @@ -31983,9 +31752,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -31995,14 +31763,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeChildRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChildRoleCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeChildRoleCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32011,26 +31779,25 @@ - (void)subscribeAttributeChildRoleCountWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChildRoleCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeChildRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32038,7 +31805,8 @@ + (void)readAttributeChildRoleCountWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChildRoleCount::TypeInfo; @@ -32047,9 +31815,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32059,14 +31826,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRouterRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouterRoleCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRouterRoleCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32075,26 +31842,25 @@ - (void)subscribeAttributeRouterRoleCountWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouterRoleCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRouterRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32102,7 +31868,8 @@ + (void)readAttributeRouterRoleCountWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouterRoleCount::TypeInfo; @@ -32111,9 +31878,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32123,14 +31889,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeLeaderRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLeaderRoleCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32139,26 +31905,25 @@ - (void)subscribeAttributeLeaderRoleCountWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLeaderRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32166,7 +31931,8 @@ + (void)readAttributeLeaderRoleCountWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::TypeInfo; @@ -32175,9 +31941,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32187,14 +31952,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAttachAttemptCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttachAttemptCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32204,26 +31969,25 @@ - (void)subscribeAttributeAttachAttemptCountWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttachAttemptCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32232,7 +31996,8 @@ + (void)readAttributeAttachAttemptCountWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::TypeInfo; @@ -32241,9 +32006,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32254,14 +32018,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePartitionIdChangeCountWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePartitionIdChangeCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32271,26 +32035,25 @@ - (void)subscribeAttributePartitionIdChangeCountWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePartitionIdChangeCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32299,7 +32062,8 @@ + (void)readAttributePartitionIdChangeCountWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::TypeInfo; @@ -32308,9 +32072,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32321,14 +32084,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBetterPartitionAttachAttemptCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBetterPartitionAttachAttemptCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32339,26 +32102,25 @@ - (void)subscribeAttributeBetterPartitionAttachAttemptCountWithParams:(MTRSubscr { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32367,7 +32129,8 @@ + (void)readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:(MTRAtt completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::TypeInfo; @@ -32376,9 +32139,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32388,14 +32150,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeParentChangeCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::ParentChangeCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeParentChangeCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32404,26 +32166,25 @@ - (void)subscribeAttributeParentChangeCountWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::ParentChangeCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeParentChangeCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32431,7 +32192,8 @@ + (void)readAttributeParentChangeCountWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::ParentChangeCount::TypeInfo; @@ -32440,9 +32202,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32452,14 +32213,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxTotalCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxTotalCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxTotalCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32468,26 +32229,25 @@ - (void)subscribeAttributeTxTotalCountWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxTotalCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxTotalCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32495,7 +32255,8 @@ + (void)readAttributeTxTotalCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxTotalCount::TypeInfo; @@ -32504,9 +32265,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32516,14 +32276,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxUnicastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxUnicastCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxUnicastCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32532,26 +32292,25 @@ - (void)subscribeAttributeTxUnicastCountWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxUnicastCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxUnicastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32559,7 +32318,8 @@ + (void)readAttributeTxUnicastCountWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxUnicastCount::TypeInfo; @@ -32568,9 +32328,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32580,14 +32339,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxBroadcastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBroadcastCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxBroadcastCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32596,26 +32355,25 @@ - (void)subscribeAttributeTxBroadcastCountWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBroadcastCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxBroadcastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32623,7 +32381,8 @@ + (void)readAttributeTxBroadcastCountWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBroadcastCount::TypeInfo; @@ -32632,9 +32391,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32644,14 +32402,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxAckRequestedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckRequestedCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxAckRequestedCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32661,26 +32419,25 @@ - (void)subscribeAttributeTxAckRequestedCountWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckRequestedCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxAckRequestedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32689,7 +32446,8 @@ + (void)readAttributeTxAckRequestedCountWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckRequestedCount::TypeInfo; @@ -32698,9 +32456,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32710,14 +32467,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxAckedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckedCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxAckedCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32726,26 +32483,25 @@ - (void)subscribeAttributeTxAckedCountWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckedCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxAckedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32753,7 +32509,8 @@ + (void)readAttributeTxAckedCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckedCount::TypeInfo; @@ -32762,9 +32519,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32774,14 +32530,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxNoAckRequestedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxNoAckRequestedCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxNoAckRequestedCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32791,26 +32547,25 @@ - (void)subscribeAttributeTxNoAckRequestedCountWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxNoAckRequestedCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxNoAckRequestedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32819,7 +32574,8 @@ + (void)readAttributeTxNoAckRequestedCountWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxNoAckRequestedCount::TypeInfo; @@ -32828,9 +32584,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32840,14 +32595,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxDataCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxDataCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32856,26 +32611,25 @@ - (void)subscribeAttributeTxDataCountWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxDataCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32883,7 +32637,8 @@ + (void)readAttributeTxDataCountWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataCount::TypeInfo; @@ -32892,9 +32647,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32904,14 +32658,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxDataPollCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataPollCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxDataPollCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32920,26 +32674,25 @@ - (void)subscribeAttributeTxDataPollCountWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataPollCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxDataPollCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -32947,7 +32700,8 @@ + (void)readAttributeTxDataPollCountWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataPollCount::TypeInfo; @@ -32956,9 +32710,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -32968,14 +32721,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxBeaconCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxBeaconCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -32984,26 +32737,25 @@ - (void)subscribeAttributeTxBeaconCountWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33011,7 +32763,8 @@ + (void)readAttributeTxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconCount::TypeInfo; @@ -33020,9 +32773,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33032,14 +32784,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxBeaconRequestCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconRequestCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxBeaconRequestCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33049,26 +32801,25 @@ - (void)subscribeAttributeTxBeaconRequestCountWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconRequestCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33077,7 +32828,8 @@ + (void)readAttributeTxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconRequestCount::TypeInfo; @@ -33086,9 +32838,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33098,14 +32849,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxOtherCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxOtherCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33114,26 +32865,25 @@ - (void)subscribeAttributeTxOtherCountWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxOtherCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33141,7 +32891,8 @@ + (void)readAttributeTxOtherCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxOtherCount::TypeInfo; @@ -33150,9 +32901,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33162,14 +32912,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxRetryCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxRetryCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxRetryCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33178,26 +32928,25 @@ - (void)subscribeAttributeTxRetryCountWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxRetryCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxRetryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33205,7 +32954,8 @@ + (void)readAttributeTxRetryCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxRetryCount::TypeInfo; @@ -33214,9 +32964,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33227,14 +32976,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxDirectMaxRetryExpiryCountWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDirectMaxRetryExpiryCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxDirectMaxRetryExpiryCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33244,26 +32993,25 @@ - (void)subscribeAttributeTxDirectMaxRetryExpiryCountWithParams:(MTRSubscribePar { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDirectMaxRetryExpiryCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33272,7 +33020,8 @@ + (void)readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache:(MTRAttribute completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDirectMaxRetryExpiryCount::TypeInfo; @@ -33281,9 +33030,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33294,14 +33042,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxIndirectMaxRetryExpiryCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxIndirectMaxRetryExpiryCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxIndirectMaxRetryExpiryCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33312,26 +33060,25 @@ - (void)subscribeAttributeTxIndirectMaxRetryExpiryCountWithParams:(MTRSubscribeP { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxIndirectMaxRetryExpiryCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33340,7 +33087,8 @@ + (void)readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache:(MTRAttribu completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxIndirectMaxRetryExpiryCount::TypeInfo; @@ -33349,9 +33097,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33361,14 +33108,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxErrCcaCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrCcaCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxErrCcaCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33377,26 +33124,25 @@ - (void)subscribeAttributeTxErrCcaCountWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrCcaCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxErrCcaCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33404,7 +33150,8 @@ + (void)readAttributeTxErrCcaCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrCcaCount::TypeInfo; @@ -33413,9 +33160,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33425,14 +33171,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxErrAbortCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrAbortCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxErrAbortCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33441,26 +33187,25 @@ - (void)subscribeAttributeTxErrAbortCountWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrAbortCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxErrAbortCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33468,7 +33213,8 @@ + (void)readAttributeTxErrAbortCountWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrAbortCount::TypeInfo; @@ -33477,9 +33223,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33489,14 +33234,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxErrBusyChannelCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrBusyChannelCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxErrBusyChannelCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33506,26 +33251,25 @@ - (void)subscribeAttributeTxErrBusyChannelCountWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrBusyChannelCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxErrBusyChannelCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33534,7 +33278,8 @@ + (void)readAttributeTxErrBusyChannelCountWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrBusyChannelCount::TypeInfo; @@ -33543,9 +33288,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33555,14 +33299,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxTotalCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxTotalCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxTotalCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33571,26 +33315,25 @@ - (void)subscribeAttributeRxTotalCountWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxTotalCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxTotalCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33598,7 +33341,8 @@ + (void)readAttributeRxTotalCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxTotalCount::TypeInfo; @@ -33607,9 +33351,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33619,14 +33362,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxUnicastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxUnicastCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxUnicastCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33635,26 +33378,25 @@ - (void)subscribeAttributeRxUnicastCountWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxUnicastCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxUnicastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33662,7 +33404,8 @@ + (void)readAttributeRxUnicastCountWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxUnicastCount::TypeInfo; @@ -33671,9 +33414,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33683,14 +33425,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxBroadcastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBroadcastCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxBroadcastCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33699,26 +33441,25 @@ - (void)subscribeAttributeRxBroadcastCountWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBroadcastCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxBroadcastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33726,7 +33467,8 @@ + (void)readAttributeRxBroadcastCountWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBroadcastCount::TypeInfo; @@ -33735,9 +33477,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33747,14 +33488,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxDataCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxDataCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33763,26 +33504,25 @@ - (void)subscribeAttributeRxDataCountWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxDataCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33790,7 +33530,8 @@ + (void)readAttributeRxDataCountWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataCount::TypeInfo; @@ -33799,9 +33540,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33811,14 +33551,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxDataPollCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataPollCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxDataPollCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33827,26 +33567,25 @@ - (void)subscribeAttributeRxDataPollCountWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataPollCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxDataPollCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33854,7 +33593,8 @@ + (void)readAttributeRxDataPollCountWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataPollCount::TypeInfo; @@ -33863,9 +33603,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33875,14 +33614,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxBeaconCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxBeaconCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33891,26 +33630,25 @@ - (void)subscribeAttributeRxBeaconCountWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33918,7 +33656,8 @@ + (void)readAttributeRxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconCount::TypeInfo; @@ -33927,9 +33666,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -33939,14 +33677,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxBeaconRequestCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconRequestCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxBeaconRequestCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -33956,26 +33694,25 @@ - (void)subscribeAttributeRxBeaconRequestCountWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconRequestCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -33984,7 +33721,8 @@ + (void)readAttributeRxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconRequestCount::TypeInfo; @@ -33993,9 +33731,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34005,14 +33742,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxOtherCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxOtherCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34021,26 +33758,25 @@ - (void)subscribeAttributeRxOtherCountWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxOtherCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34048,7 +33784,8 @@ + (void)readAttributeRxOtherCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxOtherCount::TypeInfo; @@ -34057,9 +33794,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34070,14 +33806,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxAddressFilteredCountWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxAddressFilteredCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxAddressFilteredCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34087,26 +33823,25 @@ - (void)subscribeAttributeRxAddressFilteredCountWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxAddressFilteredCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxAddressFilteredCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34115,7 +33850,8 @@ + (void)readAttributeRxAddressFilteredCountWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxAddressFilteredCount::TypeInfo; @@ -34124,9 +33860,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34137,14 +33872,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxDestAddrFilteredCountWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDestAddrFilteredCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxDestAddrFilteredCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34154,26 +33889,25 @@ - (void)subscribeAttributeRxDestAddrFilteredCountWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDestAddrFilteredCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxDestAddrFilteredCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34182,7 +33916,8 @@ + (void)readAttributeRxDestAddrFilteredCountWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDestAddrFilteredCount::TypeInfo; @@ -34191,9 +33926,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34203,14 +33937,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxDuplicatedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDuplicatedCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxDuplicatedCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34219,26 +33953,25 @@ - (void)subscribeAttributeRxDuplicatedCountWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDuplicatedCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxDuplicatedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34246,7 +33979,8 @@ + (void)readAttributeRxDuplicatedCountWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDuplicatedCount::TypeInfo; @@ -34255,9 +33989,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34267,14 +34000,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxErrNoFrameCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrNoFrameCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxErrNoFrameCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34283,26 +34016,25 @@ - (void)subscribeAttributeRxErrNoFrameCountWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrNoFrameCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxErrNoFrameCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34310,7 +34042,8 @@ + (void)readAttributeRxErrNoFrameCountWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrNoFrameCount::TypeInfo; @@ -34319,9 +34052,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34332,14 +34064,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxErrUnknownNeighborCountWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrUnknownNeighborCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxErrUnknownNeighborCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34349,26 +34081,25 @@ - (void)subscribeAttributeRxErrUnknownNeighborCountWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrUnknownNeighborCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxErrUnknownNeighborCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34377,7 +34108,8 @@ + (void)readAttributeRxErrUnknownNeighborCountWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrUnknownNeighborCount::TypeInfo; @@ -34386,9 +34118,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34399,14 +34130,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxErrInvalidSrcAddrCountWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrInvalidSrcAddrCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxErrInvalidSrcAddrCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34416,26 +34147,25 @@ - (void)subscribeAttributeRxErrInvalidSrcAddrCountWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrInvalidSrcAddrCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxErrInvalidSrcAddrCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34444,7 +34174,8 @@ + (void)readAttributeRxErrInvalidSrcAddrCountWithAttributeCache:(MTRAttributeCac completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrInvalidSrcAddrCount::TypeInfo; @@ -34453,9 +34184,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34465,14 +34195,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxErrSecCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrSecCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxErrSecCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34481,26 +34211,25 @@ - (void)subscribeAttributeRxErrSecCountWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrSecCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxErrSecCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34508,7 +34237,8 @@ + (void)readAttributeRxErrSecCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrSecCount::TypeInfo; @@ -34517,9 +34247,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34529,14 +34258,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxErrFcsCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrFcsCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxErrFcsCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34545,26 +34274,25 @@ - (void)subscribeAttributeRxErrFcsCountWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrFcsCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxErrFcsCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34572,7 +34300,8 @@ + (void)readAttributeRxErrFcsCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrFcsCount::TypeInfo; @@ -34581,9 +34310,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34593,14 +34321,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRxErrOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrOtherCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRxErrOtherCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34609,26 +34337,25 @@ - (void)subscribeAttributeRxErrOtherCountWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrOtherCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRxErrOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34636,7 +34363,8 @@ + (void)readAttributeRxErrOtherCountWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrOtherCount::TypeInfo; @@ -34645,9 +34373,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34657,14 +34384,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActiveTimestampWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveTimestampWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34673,27 +34400,25 @@ - (void)subscribeAttributeActiveTimestampWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34701,7 +34426,8 @@ + (void)readAttributeActiveTimestampWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::TypeInfo; @@ -34710,9 +34436,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34722,14 +34447,14 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributePendingTimestampWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::PendingTimestamp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePendingTimestampWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34738,27 +34463,25 @@ - (void)subscribeAttributePendingTimestampWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::PendingTimestamp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::PendingTimestamp::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePendingTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34766,7 +34489,8 @@ + (void)readAttributePendingTimestampWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::PendingTimestamp::TypeInfo; @@ -34775,9 +34499,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34787,14 +34510,14 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeDelayWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::Delay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDelayWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34803,27 +34526,25 @@ - (void)subscribeAttributeDelayWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::Delay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::Delay::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34831,7 +34552,8 @@ + (void)readAttributeDelayWithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::Delay::TypeInfo; @@ -34840,9 +34562,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34853,14 +34574,15 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeSecurityPolicyWithCompletion:(void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::SecurityPolicy::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSecurityPolicyWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34870,28 +34592,28 @@ - (void)subscribeAttributeSecurityPolicyWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::SecurityPolicy::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::SecurityPolicy::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSecurityPolicyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34900,8 +34622,9 @@ + (void)readAttributeSecurityPolicyWithAttributeCache:(MTRAttributeCacheContaine completion:(void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::SecurityPolicy::TypeInfo; @@ -34910,9 +34633,8 @@ new MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34922,14 +34644,14 @@ new MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge( - (void)readAttributeChannelPage0MaskWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeChannelPage0MaskWithParams:(MTRSubscribeParams * _Nonnull)params @@ -34938,27 +34660,25 @@ - (void)subscribeAttributeChannelPage0MaskWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableOctetStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableOctetStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeChannelPage0MaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -34966,7 +34686,8 @@ + (void)readAttributeChannelPage0MaskWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableOctetStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::TypeInfo; @@ -34975,9 +34696,8 @@ new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelabl path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -34989,16 +34709,16 @@ - (void)readAttributeOperationalDatasetComponentsWithCompletion: (void (^)( MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge(self.callbackQueue, self.device, - completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::TypeInfo; + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void) @@ -35011,32 +34731,30 @@ new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallba { // Make a copy of params before we go async. params = [params copy]; - __block MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::TypeInfo; - auto successFn - = Callback::FromCancelable( - success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast( + bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge * - innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void) @@ -35048,8 +34766,9 @@ new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallba MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::TypeInfo; @@ -35058,11 +34777,8 @@ new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallba path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable( - success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -35073,15 +34789,16 @@ new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallba - (void)readAttributeActiveNetworkFaultsListWithCompletion:(void (^)( NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::TypeInfo; + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveNetworkFaultsListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -35091,30 +34808,29 @@ - (void)subscribeAttributeActiveNetworkFaultsListWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveNetworkFaultsListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -35123,8 +34839,9 @@ + (void)readAttributeActiveNetworkFaultsListWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::TypeInfo; @@ -35133,10 +34850,8 @@ new MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridg path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -35146,14 +34861,15 @@ new MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridg - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -35163,30 +34879,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -35195,8 +34909,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; @@ -35205,10 +34920,8 @@ new MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -35218,14 +34931,15 @@ new MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -35235,30 +34949,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -35267,8 +34979,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; @@ -35277,10 +34990,8 @@ new MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -35290,14 +35001,15 @@ new MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -35306,28 +35018,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThreadNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttributeList::TypeInfo; - chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -35335,8 +35047,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThreadNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttributeList::TypeInfo; @@ -35345,9 +35058,8 @@ new MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -35357,14 +35069,14 @@ new MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -35373,26 +35085,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -35400,7 +35111,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::FeatureMap::TypeInfo; @@ -35409,9 +35121,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -35421,14 +35132,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThreadNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -35437,26 +35148,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThreadNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -35464,7 +35174,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThreadNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo; @@ -35473,9 +35184,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -37906,12 +37616,13 @@ - (void)resetCountsWithParams:(MTRWiFiNetworkDiagnosticsClusterResetCountsParams { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WiFiNetworkDiagnostics::Commands::ResetCounts::Type request; @@ -37921,23 +37632,22 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeBssidWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::Bssid::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBssidWithParams:(MTRSubscribeParams * _Nonnull)params @@ -37946,27 +37656,25 @@ - (void)subscribeAttributeBssidWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableOctetStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::Bssid::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::Bssid::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableOctetStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBssidWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -37974,7 +37682,8 @@ + (void)readAttributeBssidWithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableOctetStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::Bssid::TypeInfo; @@ -37983,9 +37692,8 @@ new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelabl path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -37995,14 +37703,15 @@ new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelabl - (void)readAttributeSecurityTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::SecurityType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSecurityTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38011,30 +37720,28 @@ - (void)subscribeAttributeSecurityTypeWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::SecurityType::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::SecurityType::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSecurityTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38042,8 +37749,9 @@ + (void)readAttributeSecurityTypeWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::SecurityType::TypeInfo; @@ -38052,10 +37760,8 @@ new MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38065,15 +37771,16 @@ new MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge( - (void)readAttributeWiFiVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = WiFiNetworkDiagnostics::Attributes::WiFiVersion::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = WiFiNetworkDiagnostics::Attributes::WiFiVersion::TypeInfo; + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWiFiVersionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38082,30 +37789,29 @@ - (void)subscribeAttributeWiFiVersionWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::WiFiVersion::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::WiFiVersion::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWiFiVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38113,8 +37819,9 @@ + (void)readAttributeWiFiVersionWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::WiFiVersion::TypeInfo; @@ -38123,10 +37830,8 @@ new MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBrid path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38136,14 +37841,14 @@ new MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBrid - (void)readAttributeChannelNumberWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::ChannelNumber::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeChannelNumberWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38152,27 +37857,25 @@ - (void)subscribeAttributeChannelNumberWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::ChannelNumber::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::ChannelNumber::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeChannelNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38180,7 +37883,8 @@ + (void)readAttributeChannelNumberWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::ChannelNumber::TypeInfo; @@ -38189,9 +37893,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38201,14 +37904,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeRssiWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::Rssi::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRssiWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38217,27 +37920,25 @@ - (void)subscribeAttributeRssiWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::Rssi::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::Rssi::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRssiWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38245,7 +37946,8 @@ + (void)readAttributeRssiWithAttributeCache:(MTRAttributeCacheContainer *)attrib queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::Rssi::TypeInfo; @@ -38254,9 +37956,8 @@ new MTRNullableInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38266,14 +37967,14 @@ new MTRNullableInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeBeaconLostCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconLostCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBeaconLostCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38282,27 +37983,25 @@ - (void)subscribeAttributeBeaconLostCountWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconLostCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconLostCount::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBeaconLostCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38310,7 +38009,8 @@ + (void)readAttributeBeaconLostCountWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconLostCount::TypeInfo; @@ -38319,9 +38019,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38331,14 +38030,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeBeaconRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconRxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBeaconRxCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38347,27 +38046,25 @@ - (void)subscribeAttributeBeaconRxCountWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconRxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconRxCount::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBeaconRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38375,7 +38072,8 @@ + (void)readAttributeBeaconRxCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconRxCount::TypeInfo; @@ -38384,9 +38082,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38397,14 +38094,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributePacketMulticastRxCountWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastRxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePacketMulticastRxCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38414,27 +38111,25 @@ - (void)subscribeAttributePacketMulticastRxCountWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastRxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastRxCount::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePacketMulticastRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38443,7 +38138,8 @@ + (void)readAttributePacketMulticastRxCountWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastRxCount::TypeInfo; @@ -38452,9 +38148,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38465,14 +38160,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributePacketMulticastTxCountWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastTxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePacketMulticastTxCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38482,27 +38177,25 @@ - (void)subscribeAttributePacketMulticastTxCountWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastTxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastTxCount::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePacketMulticastTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38511,7 +38204,8 @@ + (void)readAttributePacketMulticastTxCountWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastTxCount::TypeInfo; @@ -38520,9 +38214,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38532,14 +38225,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributePacketUnicastRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastRxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePacketUnicastRxCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38549,27 +38242,25 @@ - (void)subscribeAttributePacketUnicastRxCountWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastRxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastRxCount::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePacketUnicastRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38578,7 +38269,8 @@ + (void)readAttributePacketUnicastRxCountWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastRxCount::TypeInfo; @@ -38587,9 +38279,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38599,14 +38290,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributePacketUnicastTxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastTxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePacketUnicastTxCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38616,27 +38307,25 @@ - (void)subscribeAttributePacketUnicastTxCountWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastTxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastTxCount::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePacketUnicastTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38645,7 +38334,8 @@ + (void)readAttributePacketUnicastTxCountWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastTxCount::TypeInfo; @@ -38654,9 +38344,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38666,14 +38355,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeCurrentMaxRateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::CurrentMaxRate::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentMaxRateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38682,27 +38371,25 @@ - (void)subscribeAttributeCurrentMaxRateWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::CurrentMaxRate::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::CurrentMaxRate::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentMaxRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38710,7 +38397,8 @@ + (void)readAttributeCurrentMaxRateWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::CurrentMaxRate::TypeInfo; @@ -38719,9 +38407,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38731,14 +38418,14 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::OverrunCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38747,27 +38434,25 @@ - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::OverrunCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::OverrunCount::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38775,7 +38460,8 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::OverrunCount::TypeInfo; @@ -38784,9 +38470,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38796,14 +38481,15 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38813,28 +38499,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38843,8 +38529,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(WiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; @@ -38853,9 +38540,8 @@ new MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38865,14 +38551,15 @@ new MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38882,28 +38569,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38912,8 +38599,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(WiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; @@ -38922,9 +38610,8 @@ new MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -38934,14 +38621,15 @@ new MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WiFiNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -38950,28 +38638,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WiFiNetworkDiagnostics::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WiFiNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WiFiNetworkDiagnostics::Attributes::AttributeList::TypeInfo; - chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -38979,8 +38667,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(WiFiNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::AttributeList::TypeInfo; @@ -38989,9 +38678,8 @@ new MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -39001,14 +38689,14 @@ new MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -39017,26 +38705,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WiFiNetworkDiagnostics::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -39044,7 +38731,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::FeatureMap::TypeInfo; @@ -39053,9 +38741,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -39065,14 +38752,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WiFiNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -39081,26 +38768,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WiFiNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -39108,7 +38794,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WiFiNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo; @@ -39117,9 +38804,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -39790,12 +39476,13 @@ - (void)resetCountsWithParams:(MTREthernetNetworkDiagnosticsClusterResetCountsPa { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; EthernetNetworkDiagnostics::Commands::ResetCounts::Type request; @@ -39805,24 +39492,24 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributePHYRateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = EthernetNetworkDiagnostics::Attributes::PHYRate::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = EthernetNetworkDiagnostics::Attributes::PHYRate::TypeInfo; + chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePHYRateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -39831,30 +39518,29 @@ - (void)subscribeAttributePHYRateWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = EthernetNetworkDiagnostics::Attributes::PHYRate::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = EthernetNetworkDiagnostics::Attributes::PHYRate::TypeInfo; - chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePHYRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -39862,8 +39548,9 @@ + (void)readAttributePHYRateWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::PHYRate::TypeInfo; @@ -39872,10 +39559,8 @@ new MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBrid path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -39885,14 +39570,14 @@ new MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBrid - (void)readAttributeFullDuplexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::FullDuplex::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFullDuplexWithParams:(MTRSubscribeParams * _Nonnull)params @@ -39901,27 +39586,25 @@ - (void)subscribeAttributeFullDuplexWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableBooleanAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = EthernetNetworkDiagnostics::Attributes::FullDuplex::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = EthernetNetworkDiagnostics::Attributes::FullDuplex::TypeInfo; - chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFullDuplexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -39929,7 +39612,8 @@ + (void)readAttributeFullDuplexWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableBooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::FullDuplex::TypeInfo; @@ -39938,9 +39622,8 @@ new MTRNullableBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -39950,14 +39633,14 @@ new MTRNullableBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * - (void)readAttributePacketRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketRxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePacketRxCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -39966,26 +39649,25 @@ - (void)subscribeAttributePacketRxCountWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketRxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePacketRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -39993,7 +39675,8 @@ + (void)readAttributePacketRxCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketRxCount::TypeInfo; @@ -40002,9 +39685,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -40014,14 +39696,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePacketTxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketTxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePacketTxCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -40030,26 +39712,25 @@ - (void)subscribeAttributePacketTxCountWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketTxCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePacketTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -40057,7 +39738,8 @@ + (void)readAttributePacketTxCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketTxCount::TypeInfo; @@ -40066,9 +39748,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -40078,14 +39759,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTxErrCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::TxErrCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTxErrCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -40094,26 +39775,25 @@ - (void)subscribeAttributeTxErrCountWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = EthernetNetworkDiagnostics::Attributes::TxErrCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTxErrCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -40121,7 +39801,8 @@ + (void)readAttributeTxErrCountWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::TxErrCount::TypeInfo; @@ -40130,9 +39811,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -40142,14 +39822,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeCollisionCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::CollisionCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCollisionCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -40158,26 +39838,25 @@ - (void)subscribeAttributeCollisionCountWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = EthernetNetworkDiagnostics::Attributes::CollisionCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCollisionCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -40185,7 +39864,8 @@ + (void)readAttributeCollisionCountWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::CollisionCount::TypeInfo; @@ -40194,9 +39874,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -40206,14 +39885,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::OverrunCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -40222,26 +39901,25 @@ - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = EthernetNetworkDiagnostics::Attributes::OverrunCount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -40249,7 +39927,8 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::OverrunCount::TypeInfo; @@ -40258,9 +39937,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -40270,14 +39948,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeCarrierDetectWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::CarrierDetect::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCarrierDetectWithParams:(MTRSubscribeParams * _Nonnull)params @@ -40286,27 +39964,25 @@ - (void)subscribeAttributeCarrierDetectWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableBooleanAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = EthernetNetworkDiagnostics::Attributes::CarrierDetect::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = EthernetNetworkDiagnostics::Attributes::CarrierDetect::TypeInfo; - chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCarrierDetectWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -40314,7 +39990,8 @@ + (void)readAttributeCarrierDetectWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableBooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::CarrierDetect::TypeInfo; @@ -40323,9 +40000,8 @@ new MTRNullableBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -40335,14 +40011,14 @@ new MTRNullableBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * - (void)readAttributeTimeSinceResetWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::TimeSinceReset::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTimeSinceResetWithParams:(MTRSubscribeParams * _Nonnull)params @@ -40351,26 +40027,25 @@ - (void)subscribeAttributeTimeSinceResetWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = EthernetNetworkDiagnostics::Attributes::TimeSinceReset::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTimeSinceResetWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -40378,7 +40053,8 @@ + (void)readAttributeTimeSinceResetWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::TimeSinceReset::TypeInfo; @@ -40387,9 +40063,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -40399,14 +40074,15 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + EthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -40416,30 +40092,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = EthernetNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + EthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = EthernetNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -40448,8 +40122,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(EthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo; @@ -40458,10 +40133,8 @@ new MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -40471,14 +40144,15 @@ new MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + EthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -40488,30 +40162,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = EthernetNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + EthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = EthernetNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -40520,8 +40192,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(EthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo; @@ -40530,10 +40203,8 @@ new MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -40543,14 +40214,15 @@ new MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + EthernetNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -40559,28 +40231,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = EthernetNetworkDiagnostics::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + EthernetNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = EthernetNetworkDiagnostics::Attributes::AttributeList::TypeInfo; - chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -40588,8 +40260,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(EthernetNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::AttributeList::TypeInfo; @@ -40598,9 +40271,8 @@ new MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -40610,14 +40282,14 @@ new MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -40626,26 +40298,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = EthernetNetworkDiagnostics::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -40653,7 +40324,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::FeatureMap::TypeInfo; @@ -40662,9 +40334,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -40674,14 +40345,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = EthernetNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -40690,26 +40361,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = EthernetNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -40717,7 +40387,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = EthernetNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo; @@ -40726,9 +40397,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -41255,14 +40925,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeVendorNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::VendorName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)params @@ -41271,27 +40941,25 @@ - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::VendorName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::VendorName::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -41299,7 +40967,8 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::VendorName::TypeInfo; @@ -41308,9 +40977,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -41320,14 +40988,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::VendorID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)params @@ -41336,26 +41004,25 @@ - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRVendorIdAttributeCallbackSubscriptionBridge * callbackBridge = new MTRVendorIdAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BridgedDeviceBasic::Attributes::VendorID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRVendorIdAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -41363,7 +41030,8 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(VendorIdAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::VendorID::TypeInfo; @@ -41372,9 +41040,8 @@ new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -41384,14 +41051,14 @@ new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success - (void)readAttributeProductNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::ProductName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeProductNameWithParams:(MTRSubscribeParams * _Nonnull)params @@ -41400,27 +41067,25 @@ - (void)subscribeAttributeProductNameWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::ProductName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::ProductName::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -41428,7 +41093,8 @@ + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::ProductName::TypeInfo; @@ -41437,9 +41103,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -41449,14 +41114,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeNodeLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::NodeLabel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNodeLabelWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -41471,12 +41136,13 @@ - (void)writeAttributeNodeLabelWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -41488,13 +41154,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BridgedDeviceBasic::Attributes::NodeLabel::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNodeLabelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -41503,27 +41167,25 @@ - (void)subscribeAttributeNodeLabelWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::NodeLabel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::NodeLabel::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -41531,7 +41193,8 @@ + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::NodeLabel::TypeInfo; @@ -41540,9 +41203,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -41552,14 +41214,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeHardwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeHardwareVersionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -41568,26 +41230,25 @@ - (void)subscribeAttributeHardwareVersionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -41595,7 +41256,8 @@ + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersion::TypeInfo; @@ -41604,9 +41266,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -41616,14 +41277,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeHardwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersionString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -41633,27 +41294,25 @@ - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersionString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersionString::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -41662,7 +41321,8 @@ + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersionString::TypeInfo; @@ -41671,9 +41331,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -41683,14 +41342,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeSoftwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSoftwareVersionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -41699,26 +41358,25 @@ - (void)subscribeAttributeSoftwareVersionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -41726,7 +41384,8 @@ + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersion::TypeInfo; @@ -41735,9 +41394,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -41747,14 +41405,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeSoftwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersionString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -41764,27 +41422,25 @@ - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersionString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersionString::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -41793,7 +41449,8 @@ + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersionString::TypeInfo; @@ -41802,9 +41459,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -41814,14 +41470,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeManufacturingDateWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::ManufacturingDate::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeManufacturingDateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -41830,27 +41486,25 @@ - (void)subscribeAttributeManufacturingDateWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::ManufacturingDate::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::ManufacturingDate::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -41858,7 +41512,8 @@ + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::ManufacturingDate::TypeInfo; @@ -41867,9 +41522,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -41879,14 +41533,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributePartNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::PartNumber::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePartNumberWithParams:(MTRSubscribeParams * _Nonnull)params @@ -41895,27 +41549,25 @@ - (void)subscribeAttributePartNumberWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::PartNumber::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::PartNumber::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -41923,7 +41575,8 @@ + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::PartNumber::TypeInfo; @@ -41932,9 +41585,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -41944,14 +41596,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeProductURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::ProductURL::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeProductURLWithParams:(MTRSubscribeParams * _Nonnull)params @@ -41960,27 +41612,25 @@ - (void)subscribeAttributeProductURLWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::ProductURL::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::ProductURL::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -41988,7 +41638,8 @@ + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::ProductURL::TypeInfo; @@ -41997,9 +41648,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -42009,14 +41659,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeProductLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::ProductLabel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeProductLabelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -42025,27 +41675,25 @@ - (void)subscribeAttributeProductLabelWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::ProductLabel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::ProductLabel::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -42053,7 +41701,8 @@ + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::ProductLabel::TypeInfo; @@ -42062,9 +41711,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -42074,14 +41722,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeSerialNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::SerialNumber::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSerialNumberWithParams:(MTRSubscribeParams * _Nonnull)params @@ -42090,27 +41738,25 @@ - (void)subscribeAttributeSerialNumberWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::SerialNumber::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::SerialNumber::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -42118,7 +41764,8 @@ + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::SerialNumber::TypeInfo; @@ -42127,9 +41774,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -42139,14 +41785,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeReachableWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::Reachable::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeReachableWithParams:(MTRSubscribeParams * _Nonnull)params @@ -42155,26 +41801,25 @@ - (void)subscribeAttributeReachableWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BridgedDeviceBasic::Attributes::Reachable::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -42182,7 +41827,8 @@ + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::Reachable::TypeInfo; @@ -42191,9 +41837,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -42203,14 +41848,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeUniqueIDWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::UniqueID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUniqueIDWithParams:(MTRSubscribeParams * _Nonnull)params @@ -42219,27 +41864,25 @@ - (void)subscribeAttributeUniqueIDWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::UniqueID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::UniqueID::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -42247,7 +41890,8 @@ + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::UniqueID::TypeInfo; @@ -42256,9 +41900,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -42268,14 +41911,15 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BridgedDeviceBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -42285,28 +41929,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BridgedDeviceBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -42315,8 +41959,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BridgedDeviceBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::GeneratedCommandList::TypeInfo; @@ -42325,9 +41970,8 @@ new MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -42337,14 +41981,15 @@ new MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BridgedDeviceBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -42354,28 +41999,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BridgedDeviceBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -42384,8 +42029,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BridgedDeviceBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::AcceptedCommandList::TypeInfo; @@ -42394,9 +42040,8 @@ new MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -42406,14 +42051,15 @@ new MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BridgedDeviceBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -42422,27 +42068,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BridgedDeviceBasic::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BridgedDeviceBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BridgedDeviceBasic::Attributes::AttributeList::TypeInfo; - chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -42450,8 +42096,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BridgedDeviceBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::AttributeList::TypeInfo; @@ -42460,9 +42107,8 @@ new MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -42472,14 +42118,14 @@ new MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -42488,26 +42134,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BridgedDeviceBasic::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -42515,7 +42160,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::FeatureMap::TypeInfo; @@ -42524,9 +42170,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -42536,14 +42181,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BridgedDeviceBasic::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -42552,26 +42197,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BridgedDeviceBasic::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -42579,7 +42223,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BridgedDeviceBasic::Attributes::ClusterRevision::TypeInfo; @@ -42588,9 +42233,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -43321,14 +42965,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeNumberOfPositionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Switch::Attributes::NumberOfPositions::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfPositionsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -43337,26 +42981,25 @@ - (void)subscribeAttributeNumberOfPositionsWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Switch::Attributes::NumberOfPositions::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfPositionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -43364,7 +43007,8 @@ + (void)readAttributeNumberOfPositionsWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Switch::Attributes::NumberOfPositions::TypeInfo; @@ -43373,9 +43017,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -43385,14 +43028,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeCurrentPositionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Switch::Attributes::CurrentPosition::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentPositionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -43401,26 +43044,25 @@ - (void)subscribeAttributeCurrentPositionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Switch::Attributes::CurrentPosition::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -43428,7 +43070,8 @@ + (void)readAttributeCurrentPositionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Switch::Attributes::CurrentPosition::TypeInfo; @@ -43437,9 +43080,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -43449,14 +43091,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeMultiPressMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Switch::Attributes::MultiPressMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMultiPressMaxWithParams:(MTRSubscribeParams * _Nonnull)params @@ -43465,26 +43107,25 @@ - (void)subscribeAttributeMultiPressMaxWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Switch::Attributes::MultiPressMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMultiPressMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -43492,7 +43133,8 @@ + (void)readAttributeMultiPressMaxWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Switch::Attributes::MultiPressMax::TypeInfo; @@ -43501,9 +43143,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -43513,14 +43154,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSwitchGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSwitchGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SwitchGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Switch::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -43530,27 +43171,26 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Switch::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SwitchGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Switch::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -43559,35 +43199,36 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSwitchGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = Switch::Attributes::GeneratedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRSwitchGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(SwitchGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = Switch::Attributes::GeneratedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSwitchAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSwitchAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SwitchAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Switch::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -43597,27 +43238,26 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Switch::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + SwitchAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Switch::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -43626,7 +43266,8 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSwitchAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSwitchAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(SwitchAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Switch::Attributes::AcceptedCommandList::TypeInfo; @@ -43635,9 +43276,8 @@ new MTRSwitchAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -43647,14 +43287,14 @@ new MTRSwitchAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^ - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSwitchAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSwitchAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, SwitchAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Switch::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -43663,27 +43303,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Switch::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, SwitchAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Switch::Attributes::AttributeList::TypeInfo; - chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -43691,7 +43330,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRSwitchAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRSwitchAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(SwitchAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Switch::Attributes::AttributeList::TypeInfo; @@ -43700,9 +43340,8 @@ new MTRSwitchAttributeListListAttributeCallbackBridge(queue, completion, ^(Cance path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -43712,14 +43351,14 @@ new MTRSwitchAttributeListListAttributeCallbackBridge(queue, completion, ^(Cance - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Switch::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -43728,26 +43367,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Switch::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -43755,7 +43393,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Switch::Attributes::FeatureMap::TypeInfo; @@ -43764,9 +43403,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -43776,14 +43414,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Switch::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -43792,26 +43430,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Switch::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -43819,7 +43456,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Switch::Attributes::ClusterRevision::TypeInfo; @@ -43828,9 +43466,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -44149,12 +43786,13 @@ - (void)openCommissioningWindowWithParams:(MTRAdministratorCommissioningClusterO { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AdministratorCommissioning::Commands::OpenCommissioningWindow::Type request; @@ -44172,11 +43810,10 @@ new MTRCommandSuccessCallbackBridge( request.iterations = params.iterations.unsignedIntValue; request.salt = [self asByteSpan:params.salt]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)openBasicCommissioningWindowWithParams:(MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams *)params @@ -44184,12 +43821,13 @@ - (void)openBasicCommissioningWindowWithParams:(MTRAdministratorCommissioningClu { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type request; @@ -44203,11 +43841,10 @@ new MTRCommandSuccessCallbackBridge( } request.commissioningTimeout = params.commissioningTimeout.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)revokeCommissioningWithCompletion:(MTRStatusCompletion)completion @@ -44219,12 +43856,13 @@ - (void)revokeCommissioningWithParams:(MTRAdministratorCommissioningClusterRevok { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AdministratorCommissioning::Commands::RevokeCommissioning::Type request; @@ -44237,25 +43875,24 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(10000); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeWindowStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(self.callbackQueue, self.device, - completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = AdministratorCommissioning::Attributes::WindowStatus::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AdministratorCommissioningClusterCommissioningWindowStatusAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = AdministratorCommissioning::Attributes::WindowStatus::TypeInfo; + chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWindowStatusWithParams:(MTRSubscribeParams * _Nonnull)params @@ -44264,32 +43901,30 @@ - (void)subscribeAttributeWindowStatusWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AdministratorCommissioning::Attributes::WindowStatus::TypeInfo; - auto successFn - = Callback::FromCancelable( - success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AdministratorCommissioningClusterCommissioningWindowStatusAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast( + bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AdministratorCommissioning::Attributes::WindowStatus::TypeInfo; - chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge * - innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWindowStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -44297,8 +43932,9 @@ + (void)readAttributeWindowStatusWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(AdministratorCommissioningClusterCommissioningWindowStatusAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AdministratorCommissioning::Attributes::WindowStatus::TypeInfo; @@ -44307,11 +43943,8 @@ new MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallba path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable( - success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -44321,14 +43954,14 @@ new MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallba - (void)readAttributeAdminFabricIndexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AdministratorCommissioning::Attributes::AdminFabricIndex::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAdminFabricIndexWithParams:(MTRSubscribeParams * _Nonnull)params @@ -44337,27 +43970,25 @@ - (void)subscribeAttributeAdminFabricIndexWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AdministratorCommissioning::Attributes::AdminFabricIndex::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AdministratorCommissioning::Attributes::AdminFabricIndex::TypeInfo; - chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAdminFabricIndexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -44365,7 +43996,8 @@ + (void)readAttributeAdminFabricIndexWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AdministratorCommissioning::Attributes::AdminFabricIndex::TypeInfo; @@ -44374,9 +44006,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -44386,14 +44017,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeAdminVendorIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AdministratorCommissioning::Attributes::AdminVendorId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAdminVendorIdWithParams:(MTRSubscribeParams * _Nonnull)params @@ -44402,27 +44033,25 @@ - (void)subscribeAttributeAdminVendorIdWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AdministratorCommissioning::Attributes::AdminVendorId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AdministratorCommissioning::Attributes::AdminVendorId::TypeInfo; - chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAdminVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -44430,7 +44059,8 @@ + (void)readAttributeAdminVendorIdWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AdministratorCommissioning::Attributes::AdminVendorId::TypeInfo; @@ -44439,9 +44069,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -44451,14 +44080,15 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AdministratorCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = AdministratorCommissioning::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -44468,30 +44098,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AdministratorCommissioning::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AdministratorCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AdministratorCommissioning::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -44500,8 +44128,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(AdministratorCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AdministratorCommissioning::Attributes::GeneratedCommandList::TypeInfo; @@ -44510,10 +44139,8 @@ new MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -44523,14 +44150,15 @@ new MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AdministratorCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = AdministratorCommissioning::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -44540,30 +44168,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AdministratorCommissioning::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AdministratorCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AdministratorCommissioning::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -44572,8 +44198,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(AdministratorCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AdministratorCommissioning::Attributes::AcceptedCommandList::TypeInfo; @@ -44582,10 +44209,8 @@ new MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -44595,14 +44220,15 @@ new MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AdministratorCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = AdministratorCommissioning::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -44611,28 +44237,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AdministratorCommissioning::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AdministratorCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AdministratorCommissioning::Attributes::AttributeList::TypeInfo; - chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -44640,8 +44266,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(AdministratorCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AdministratorCommissioning::Attributes::AttributeList::TypeInfo; @@ -44650,9 +44277,8 @@ new MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -44662,14 +44288,14 @@ new MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AdministratorCommissioning::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -44678,26 +44304,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AdministratorCommissioning::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -44705,7 +44330,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AdministratorCommissioning::Attributes::FeatureMap::TypeInfo; @@ -44714,9 +44340,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -44726,14 +44351,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AdministratorCommissioning::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -44742,26 +44367,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AdministratorCommissioning::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -44769,7 +44393,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AdministratorCommissioning::Attributes::ClusterRevision::TypeInfo; @@ -44778,9 +44403,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -45118,8 +44742,10 @@ - (void)attestationRequestWithParams:(MTROperationalCredentialsClusterAttestatio { // Make a copy of params before we go async. params = [params copy]; - new MTROperationalCredentialsClusterAttestationResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterAttestationResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterAttestationResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::AttestationRequest::Type request; @@ -45130,11 +44756,10 @@ new MTROperationalCredentialsClusterAttestationResponseCallbackBridge(self.callb } request.attestationNonce = [self asByteSpan:params.attestationNonce]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)certificateChainRequestWithParams:(MTROperationalCredentialsClusterCertificateChainRequestParams *)params @@ -45143,8 +44768,10 @@ - (void)certificateChainRequestWithParams:(MTROperationalCredentialsClusterCerti { // Make a copy of params before we go async. params = [params copy]; - new MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterCertificateChainResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::CertificateChainRequest::Type request; @@ -45155,11 +44782,10 @@ new MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(self. } request.certificateType = params.certificateType.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)CSRRequestWithParams:(MTROperationalCredentialsClusterCSRRequestParams *)params @@ -45168,8 +44794,10 @@ - (void)CSRRequestWithParams:(MTROperationalCredentialsClusterCSRRequestParams * { // Make a copy of params before we go async. params = [params copy]; - new MTROperationalCredentialsClusterCSRResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterCSRResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterCSRResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::CSRRequest::Type request; @@ -45184,11 +44812,10 @@ new MTROperationalCredentialsClusterCSRResponseCallbackBridge(self.callbackQueue definedValue_0 = params.isForUpdateNOC.boolValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)addNOCWithParams:(MTROperationalCredentialsClusterAddNOCParams *)params @@ -45197,8 +44824,10 @@ - (void)addNOCWithParams:(MTROperationalCredentialsClusterAddNOCParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::AddNOC::Type request; @@ -45217,11 +44846,10 @@ new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue request.adminVendorId = static_cast>(params.adminVendorId.unsignedShortValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)updateNOCWithParams:(MTROperationalCredentialsClusterUpdateNOCParams *)params @@ -45230,8 +44858,10 @@ - (void)updateNOCWithParams:(MTROperationalCredentialsClusterUpdateNOCParams *)p { // Make a copy of params before we go async. params = [params copy]; - new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::UpdateNOC::Type request; @@ -45246,11 +44876,10 @@ new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue definedValue_0 = [self asByteSpan:params.icacValue]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)updateFabricLabelWithParams:(MTROperationalCredentialsClusterUpdateFabricLabelParams *)params @@ -45259,8 +44888,10 @@ - (void)updateFabricLabelWithParams:(MTROperationalCredentialsClusterUpdateFabri { // Make a copy of params before we go async. params = [params copy]; - new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::UpdateFabricLabel::Type request; @@ -45271,11 +44902,10 @@ new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue } request.label = [self asCharSpan:params.label]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)removeFabricWithParams:(MTROperationalCredentialsClusterRemoveFabricParams *)params @@ -45284,8 +44914,10 @@ - (void)removeFabricWithParams:(MTROperationalCredentialsClusterRemoveFabricPara { // Make a copy of params before we go async. params = [params copy]; - new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::RemoveFabric::Type request; @@ -45296,11 +44928,10 @@ new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue } request.fabricIndex = params.fabricIndex.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAddTrustedRootCertificateParams *)params @@ -45308,12 +44939,13 @@ - (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAdd { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::AddTrustedRootCertificate::Type request; @@ -45324,26 +44956,24 @@ new MTRCommandSuccessCallbackBridge( } request.rootCertificate = [self asByteSpan:params.rootCertificate]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeNOCsWithParams:(MTRReadParams * _Nullable)params completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { // Make a copy of params before we go async. params = [params copy]; - new MTROperationalCredentialsNOCsListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsNOCsListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsNOCsListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OperationalCredentials::Attributes::NOCs::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute( - successFn->mContext, successFn->mCall, failureFn->mCall, params.filterByFabric); + return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNOCsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -45352,27 +44982,26 @@ - (void)subscribeAttributeNOCsWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OperationalCredentials::Attributes::NOCs::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsNOCsListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OperationalCredentials::Attributes::NOCs::TypeInfo; - chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNOCsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -45380,38 +45009,39 @@ + (void)readAttributeNOCsWithAttributeCache:(MTRAttributeCacheContainer *)attrib queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROperationalCredentialsNOCsListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = OperationalCredentials::Attributes::NOCs::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTROperationalCredentialsNOCsListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OperationalCredentialsNOCsListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = OperationalCredentials::Attributes::NOCs::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeFabricsWithParams:(MTRReadParams * _Nullable)params completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { // Make a copy of params before we go async. params = [params copy]; - new MTROperationalCredentialsFabricsListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsFabricsListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsFabricsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OperationalCredentials::Attributes::Fabrics::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute( - successFn->mContext, successFn->mCall, failureFn->mCall, params.filterByFabric); + return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFabricsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -45420,27 +45050,27 @@ - (void)subscribeAttributeFabricsWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OperationalCredentials::Attributes::Fabrics::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsFabricsListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OperationalCredentials::Attributes::Fabrics::TypeInfo; - chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -45448,8 +45078,9 @@ + (void)readAttributeFabricsWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROperationalCredentialsFabricsListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsFabricsListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OperationalCredentialsFabricsListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OperationalCredentials::Attributes::Fabrics::TypeInfo; @@ -45458,9 +45089,8 @@ new MTROperationalCredentialsFabricsListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -45470,14 +45100,14 @@ new MTROperationalCredentialsFabricsListAttributeCallbackBridge( - (void)readAttributeSupportedFabricsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OperationalCredentials::Attributes::SupportedFabrics::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSupportedFabricsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -45486,26 +45116,25 @@ - (void)subscribeAttributeSupportedFabricsWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OperationalCredentials::Attributes::SupportedFabrics::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSupportedFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -45513,7 +45142,8 @@ + (void)readAttributeSupportedFabricsWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OperationalCredentials::Attributes::SupportedFabrics::TypeInfo; @@ -45522,9 +45152,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -45534,14 +45163,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeCommissionedFabricsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OperationalCredentials::Attributes::CommissionedFabrics::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCommissionedFabricsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -45551,26 +45180,25 @@ - (void)subscribeAttributeCommissionedFabricsWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OperationalCredentials::Attributes::CommissionedFabrics::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCommissionedFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -45579,7 +45207,8 @@ + (void)readAttributeCommissionedFabricsWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OperationalCredentials::Attributes::CommissionedFabrics::TypeInfo; @@ -45588,9 +45217,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -45601,14 +45229,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeTrustedRootCertificatesWithCompletion:(void (^)( NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsTrustedRootCertificatesListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OperationalCredentials::Attributes::TrustedRootCertificates::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTrustedRootCertificatesWithParams:(MTRSubscribeParams * _Nonnull)params @@ -45618,30 +45247,28 @@ - (void)subscribeAttributeTrustedRootCertificatesWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OperationalCredentials::Attributes::TrustedRootCertificates::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - - chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + auto * bridge = new MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsTrustedRootCertificatesListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OperationalCredentials::Attributes::TrustedRootCertificates::TypeInfo; + + chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTrustedRootCertificatesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -45650,8 +45277,9 @@ + (void)readAttributeTrustedRootCertificatesWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OperationalCredentialsTrustedRootCertificatesListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OperationalCredentials::Attributes::TrustedRootCertificates::TypeInfo; @@ -45660,10 +45288,8 @@ new MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -45673,14 +45299,14 @@ new MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge( - (void)readAttributeCurrentFabricIndexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OperationalCredentials::Attributes::CurrentFabricIndex::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentFabricIndexWithParams:(MTRSubscribeParams * _Nonnull)params @@ -45690,26 +45316,25 @@ - (void)subscribeAttributeCurrentFabricIndexWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OperationalCredentials::Attributes::CurrentFabricIndex::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentFabricIndexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -45718,7 +45343,8 @@ + (void)readAttributeCurrentFabricIndexWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OperationalCredentials::Attributes::CurrentFabricIndex::TypeInfo; @@ -45727,9 +45353,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -45739,14 +45364,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OperationalCredentials::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -45756,28 +45382,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OperationalCredentials::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OperationalCredentials::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -45786,8 +45412,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OperationalCredentialsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OperationalCredentials::Attributes::GeneratedCommandList::TypeInfo; @@ -45796,9 +45423,8 @@ new MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -45808,14 +45434,15 @@ new MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OperationalCredentials::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -45825,28 +45452,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OperationalCredentials::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OperationalCredentials::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -45855,8 +45482,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OperationalCredentialsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OperationalCredentials::Attributes::AcceptedCommandList::TypeInfo; @@ -45865,9 +45493,8 @@ new MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -45877,14 +45504,15 @@ new MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROperationalCredentialsAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OperationalCredentials::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -45893,28 +45521,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OperationalCredentials::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OperationalCredentials::Attributes::AttributeList::TypeInfo; - chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -45922,8 +45550,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROperationalCredentialsAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OperationalCredentialsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OperationalCredentials::Attributes::AttributeList::TypeInfo; @@ -45932,9 +45561,8 @@ new MTROperationalCredentialsAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -45944,14 +45572,14 @@ new MTROperationalCredentialsAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OperationalCredentials::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -45960,26 +45588,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OperationalCredentials::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -45987,7 +45614,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OperationalCredentials::Attributes::FeatureMap::TypeInfo; @@ -45996,9 +45624,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -46008,14 +45635,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OperationalCredentials::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -46024,26 +45651,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OperationalCredentials::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -46051,7 +45677,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OperationalCredentials::Attributes::ClusterRevision::TypeInfo; @@ -46060,9 +45687,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -46528,12 +46154,13 @@ - (void)keySetWriteWithParams:(MTRGroupKeyManagementClusterKeySetWriteParams *)p { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GroupKeyManagement::Commands::KeySetWrite::Type request; @@ -46583,11 +46210,10 @@ new MTRCommandSuccessCallbackBridge( nonNullValue_1 = params.groupKeySet.epochStartTime2.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)keySetReadWithParams:(MTRGroupKeyManagementClusterKeySetReadParams *)params @@ -46596,8 +46222,10 @@ - (void)keySetReadWithParams:(MTRGroupKeyManagementClusterKeySetReadParams *)par { // Make a copy of params before we go async. params = [params copy]; - new MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementClusterKeySetReadResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GroupKeyManagement::Commands::KeySetRead::Type request; @@ -46608,23 +46236,23 @@ new MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(self.callbackQu } request.groupKeySetID = params.groupKeySetID.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)keySetRemoveWithParams:(MTRGroupKeyManagementClusterKeySetRemoveParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GroupKeyManagement::Commands::KeySetRemove::Type request; @@ -46635,11 +46263,10 @@ new MTRCommandSuccessCallbackBridge( } request.groupKeySetID = params.groupKeySetID.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)keySetReadAllIndicesWithParams:(MTRGroupKeyManagementClusterKeySetReadAllIndicesParams *)params @@ -46648,8 +46275,10 @@ - (void)keySetReadAllIndicesWithParams:(MTRGroupKeyManagementClusterKeySetReadAl { // Make a copy of params before we go async. params = [params copy]; - new MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GroupKeyManagement::Commands::KeySetReadAllIndices::Type request; @@ -46681,26 +46310,25 @@ new MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(self. } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeGroupKeyMapWithParams:(MTRReadParams * _Nullable)params completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { // Make a copy of params before we go async. params = [params copy]; - new MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementGroupKeyMapListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GroupKeyManagement::Attributes::GroupKeyMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute( - successFn->mContext, successFn->mCall, failureFn->mCall, params.filterByFabric); + return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeGroupKeyMapWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -46715,12 +46343,13 @@ - (void)writeAttributeGroupKeyMapWithValue:(NSArray * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -46755,13 +46384,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGroupKeyMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -46770,27 +46397,27 @@ - (void)subscribeAttributeGroupKeyMapWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GroupKeyManagement::Attributes::GroupKeyMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementGroupKeyMapListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GroupKeyManagement::Attributes::GroupKeyMap::TypeInfo; - chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGroupKeyMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -46798,8 +46425,9 @@ + (void)readAttributeGroupKeyMapWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GroupKeyManagementGroupKeyMapListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GroupKeyManagement::Attributes::GroupKeyMap::TypeInfo; @@ -46808,9 +46436,8 @@ new MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -46822,15 +46449,15 @@ - (void)readAttributeGroupTableWithParams:(MTRReadParams * _Nullable)params completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { // Make a copy of params before we go async. params = [params copy]; - new MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementGroupTableListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GroupKeyManagement::Attributes::GroupTable::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute( - successFn->mContext, successFn->mCall, failureFn->mCall, params.filterByFabric); + return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGroupTableWithParams:(MTRSubscribeParams * _Nonnull)params @@ -46839,27 +46466,27 @@ - (void)subscribeAttributeGroupTableWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GroupKeyManagement::Attributes::GroupTable::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementGroupTableListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GroupKeyManagement::Attributes::GroupTable::TypeInfo; - chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGroupTableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -46867,8 +46494,9 @@ + (void)readAttributeGroupTableWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupKeyManagementGroupTableListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GroupKeyManagementGroupTableListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GroupKeyManagement::Attributes::GroupTable::TypeInfo; @@ -46877,9 +46505,8 @@ new MTRGroupKeyManagementGroupTableListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -46889,14 +46516,14 @@ new MTRGroupKeyManagementGroupTableListAttributeCallbackBridge( - (void)readAttributeMaxGroupsPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GroupKeyManagement::Attributes::MaxGroupsPerFabric::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxGroupsPerFabricWithParams:(MTRSubscribeParams * _Nonnull)params @@ -46906,26 +46533,25 @@ - (void)subscribeAttributeMaxGroupsPerFabricWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GroupKeyManagement::Attributes::MaxGroupsPerFabric::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxGroupsPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -46934,7 +46560,8 @@ + (void)readAttributeMaxGroupsPerFabricWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GroupKeyManagement::Attributes::MaxGroupsPerFabric::TypeInfo; @@ -46943,9 +46570,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -46955,14 +46581,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMaxGroupKeysPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GroupKeyManagement::Attributes::MaxGroupKeysPerFabric::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxGroupKeysPerFabricWithParams:(MTRSubscribeParams * _Nonnull)params @@ -46972,26 +46598,25 @@ - (void)subscribeAttributeMaxGroupKeysPerFabricWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GroupKeyManagement::Attributes::MaxGroupKeysPerFabric::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxGroupKeysPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -47000,7 +46625,8 @@ + (void)readAttributeMaxGroupKeysPerFabricWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GroupKeyManagement::Attributes::MaxGroupKeysPerFabric::TypeInfo; @@ -47009,9 +46635,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -47021,14 +46646,15 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GroupKeyManagement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -47038,28 +46664,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GroupKeyManagement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GroupKeyManagement::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -47068,8 +46694,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GroupKeyManagementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GroupKeyManagement::Attributes::GeneratedCommandList::TypeInfo; @@ -47078,9 +46705,8 @@ new MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -47090,14 +46716,15 @@ new MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GroupKeyManagement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -47107,28 +46734,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GroupKeyManagement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GroupKeyManagement::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -47137,8 +46764,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GroupKeyManagementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GroupKeyManagement::Attributes::AcceptedCommandList::TypeInfo; @@ -47147,9 +46775,8 @@ new MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -47159,14 +46786,15 @@ new MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = GroupKeyManagement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -47175,27 +46803,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = GroupKeyManagement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = GroupKeyManagement::Attributes::AttributeList::TypeInfo; - chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -47203,8 +46831,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRGroupKeyManagementAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(GroupKeyManagementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GroupKeyManagement::Attributes::AttributeList::TypeInfo; @@ -47213,9 +46842,8 @@ new MTRGroupKeyManagementAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -47225,14 +46853,14 @@ new MTRGroupKeyManagementAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GroupKeyManagement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -47241,26 +46869,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GroupKeyManagement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -47268,7 +46895,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GroupKeyManagement::Attributes::FeatureMap::TypeInfo; @@ -47277,9 +46905,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -47289,14 +46916,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = GroupKeyManagement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -47305,26 +46932,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = GroupKeyManagement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -47332,7 +46958,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = GroupKeyManagement::Attributes::ClusterRevision::TypeInfo; @@ -47341,9 +46968,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -47724,14 +47350,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeLabelListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFixedLabelLabelListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFixedLabelLabelListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FixedLabelLabelListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FixedLabel::Attributes::LabelList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLabelListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -47740,27 +47366,26 @@ - (void)subscribeAttributeLabelListWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FixedLabel::Attributes::LabelList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FixedLabelLabelListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FixedLabel::Attributes::LabelList::TypeInfo; - chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -47768,7 +47393,8 @@ + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFixedLabelLabelListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFixedLabelLabelListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(FixedLabelLabelListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FixedLabel::Attributes::LabelList::TypeInfo; @@ -47777,9 +47403,8 @@ new MTRFixedLabelLabelListListAttributeCallbackBridge(queue, completion, ^(Cance path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -47789,14 +47414,15 @@ new MTRFixedLabelLabelListListAttributeCallbackBridge(queue, completion, ^(Cance - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FixedLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = FixedLabel::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -47806,27 +47432,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FixedLabel::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FixedLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FixedLabel::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -47835,8 +47461,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(FixedLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FixedLabel::Attributes::GeneratedCommandList::TypeInfo; @@ -47845,9 +47472,8 @@ new MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -47857,14 +47483,15 @@ new MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FixedLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = FixedLabel::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -47874,27 +47501,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FixedLabel::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FixedLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FixedLabel::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -47903,8 +47530,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(FixedLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FixedLabel::Attributes::AcceptedCommandList::TypeInfo; @@ -47913,9 +47541,8 @@ new MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -47925,14 +47552,14 @@ new MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFixedLabelAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFixedLabelAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FixedLabelAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FixedLabel::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -47941,27 +47568,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FixedLabel::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FixedLabelAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FixedLabel::Attributes::AttributeList::TypeInfo; - chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -47969,7 +47595,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFixedLabelAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFixedLabelAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(FixedLabelAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FixedLabel::Attributes::AttributeList::TypeInfo; @@ -47978,9 +47605,8 @@ new MTRFixedLabelAttributeListListAttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -47990,14 +47616,14 @@ new MTRFixedLabelAttributeListListAttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FixedLabel::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -48006,26 +47632,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FixedLabel::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -48033,7 +47658,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FixedLabel::Attributes::FeatureMap::TypeInfo; @@ -48042,9 +47668,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -48054,14 +47679,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FixedLabel::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -48070,26 +47695,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FixedLabel::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -48097,7 +47721,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FixedLabel::Attributes::ClusterRevision::TypeInfo; @@ -48106,9 +47731,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -48351,14 +47975,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeLabelListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUserLabelLabelListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUserLabelLabelListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, UserLabelLabelListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = UserLabel::Attributes::LabelList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLabelListWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -48373,12 +47997,13 @@ - (void)writeAttributeLabelListWithValue:(NSArray * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -48412,13 +48037,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLabelListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -48427,27 +48050,25 @@ - (void)subscribeAttributeLabelListWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = UserLabel::Attributes::LabelList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, UserLabelLabelListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = UserLabel::Attributes::LabelList::TypeInfo; - chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -48455,7 +48076,8 @@ + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUserLabelLabelListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUserLabelLabelListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(UserLabelLabelListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = UserLabel::Attributes::LabelList::TypeInfo; @@ -48464,9 +48086,8 @@ new MTRUserLabelLabelListListAttributeCallbackBridge(queue, completion, ^(Cancel path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -48476,14 +48097,15 @@ new MTRUserLabelLabelListListAttributeCallbackBridge(queue, completion, ^(Cancel - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UserLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = UserLabel::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -48493,27 +48115,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = UserLabel::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UserLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = UserLabel::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -48522,8 +48144,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUserLabelGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(UserLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = UserLabel::Attributes::GeneratedCommandList::TypeInfo; @@ -48532,9 +48155,8 @@ new MTRUserLabelGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -48544,14 +48166,15 @@ new MTRUserLabelGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UserLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = UserLabel::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -48561,27 +48184,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = UserLabel::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + UserLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = UserLabel::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -48590,8 +48213,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUserLabelAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(UserLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = UserLabel::Attributes::AcceptedCommandList::TypeInfo; @@ -48600,9 +48224,8 @@ new MTRUserLabelAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -48612,14 +48235,14 @@ new MTRUserLabelAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUserLabelAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUserLabelAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, UserLabelAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = UserLabel::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -48628,27 +48251,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = UserLabel::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, UserLabelAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = UserLabel::Attributes::AttributeList::TypeInfo; - chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -48656,7 +48278,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRUserLabelAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRUserLabelAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(UserLabelAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = UserLabel::Attributes::AttributeList::TypeInfo; @@ -48665,9 +48288,8 @@ new MTRUserLabelAttributeListListAttributeCallbackBridge(queue, completion, ^(Ca path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -48677,14 +48299,14 @@ new MTRUserLabelAttributeListListAttributeCallbackBridge(queue, completion, ^(Ca - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = UserLabel::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -48693,26 +48315,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = UserLabel::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -48720,7 +48341,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = UserLabel::Attributes::FeatureMap::TypeInfo; @@ -48729,9 +48351,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -48741,14 +48362,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = UserLabel::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -48757,26 +48378,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = UserLabel::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -48784,7 +48404,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = UserLabel::Attributes::ClusterRevision::TypeInfo; @@ -48793,9 +48414,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -49048,14 +48668,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeStateValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BooleanState::Attributes::StateValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStateValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -49064,26 +48684,25 @@ - (void)subscribeAttributeStateValueWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BooleanState::Attributes::StateValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStateValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -49091,7 +48710,8 @@ + (void)readAttributeStateValueWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BooleanState::Attributes::StateValue::TypeInfo; @@ -49100,9 +48720,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -49112,14 +48731,15 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BooleanStateGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BooleanState::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -49129,27 +48749,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BooleanState::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BooleanStateGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BooleanState::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -49158,8 +48778,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BooleanStateGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BooleanState::Attributes::GeneratedCommandList::TypeInfo; @@ -49168,9 +48789,8 @@ new MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -49180,14 +48800,15 @@ new MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BooleanStateAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BooleanState::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -49197,27 +48818,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BooleanState::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BooleanStateAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BooleanState::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -49226,8 +48847,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BooleanStateAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BooleanState::Attributes::AcceptedCommandList::TypeInfo; @@ -49236,9 +48858,8 @@ new MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -49248,14 +48869,14 @@ new MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanStateAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanStateAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BooleanStateAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BooleanState::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -49264,27 +48885,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BooleanState::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BooleanStateAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BooleanState::Attributes::AttributeList::TypeInfo; - chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -49292,7 +48912,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanStateAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanStateAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanStateAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BooleanState::Attributes::AttributeList::TypeInfo; @@ -49301,9 +48922,8 @@ new MTRBooleanStateAttributeListListAttributeCallbackBridge(queue, completion, ^ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -49313,14 +48933,14 @@ new MTRBooleanStateAttributeListListAttributeCallbackBridge(queue, completion, ^ - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BooleanState::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -49329,26 +48949,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BooleanState::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -49356,7 +48975,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BooleanState::Attributes::FeatureMap::TypeInfo; @@ -49365,9 +48985,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -49377,14 +48996,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BooleanState::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -49393,26 +49012,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BooleanState::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -49420,7 +49038,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BooleanState::Attributes::ClusterRevision::TypeInfo; @@ -49429,9 +49048,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -49676,12 +49294,13 @@ - (void)changeToModeWithParams:(MTRModeSelectClusterChangeToModeParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ModeSelect::Commands::ChangeToMode::Type request; @@ -49692,23 +49311,22 @@ new MTRCommandSuccessCallbackBridge( } request.newMode = params.newMode.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeDescriptionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ModeSelect::Attributes::Description::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -49717,27 +49335,25 @@ - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ModeSelect::Attributes::Description::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ModeSelect::Attributes::Description::TypeInfo; - chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -49745,7 +49361,8 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ModeSelect::Attributes::Description::TypeInfo; @@ -49754,9 +49371,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -49766,14 +49382,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeStandardNamespaceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ModeSelect::Attributes::StandardNamespace::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStandardNamespaceWithParams:(MTRSubscribeParams * _Nonnull)params @@ -49782,27 +49398,25 @@ - (void)subscribeAttributeStandardNamespaceWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ModeSelect::Attributes::StandardNamespace::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ModeSelect::Attributes::StandardNamespace::TypeInfo; - chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStandardNamespaceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -49810,7 +49424,8 @@ + (void)readAttributeStandardNamespaceWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ModeSelect::Attributes::StandardNamespace::TypeInfo; @@ -49819,9 +49434,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -49831,14 +49445,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeSupportedModesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRModeSelectSupportedModesListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRModeSelectSupportedModesListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ModeSelectSupportedModesListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ModeSelect::Attributes::SupportedModes::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSupportedModesWithParams:(MTRSubscribeParams * _Nonnull)params @@ -49847,27 +49461,26 @@ - (void)subscribeAttributeSupportedModesWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ModeSelect::Attributes::SupportedModes::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ModeSelectSupportedModesListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ModeSelect::Attributes::SupportedModes::TypeInfo; - chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSupportedModesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -49875,7 +49488,8 @@ + (void)readAttributeSupportedModesWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRModeSelectSupportedModesListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRModeSelectSupportedModesListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ModeSelectSupportedModesListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ModeSelect::Attributes::SupportedModes::TypeInfo; @@ -49884,9 +49498,8 @@ new MTRModeSelectSupportedModesListAttributeCallbackBridge(queue, completion, ^( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -49896,14 +49509,14 @@ new MTRModeSelectSupportedModesListAttributeCallbackBridge(queue, completion, ^( - (void)readAttributeCurrentModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ModeSelect::Attributes::CurrentMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -49912,26 +49525,25 @@ - (void)subscribeAttributeCurrentModeWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ModeSelect::Attributes::CurrentMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -49939,7 +49551,8 @@ + (void)readAttributeCurrentModeWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ModeSelect::Attributes::CurrentMode::TypeInfo; @@ -49948,9 +49561,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -49960,14 +49572,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeStartUpModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ModeSelect::Attributes::StartUpMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeStartUpModeWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -49982,12 +49594,13 @@ - (void)writeAttributeStartUpModeWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -50004,13 +49617,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStartUpModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -50019,27 +49630,25 @@ - (void)subscribeAttributeStartUpModeWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ModeSelect::Attributes::StartUpMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ModeSelect::Attributes::StartUpMode::TypeInfo; - chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStartUpModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -50047,7 +49656,8 @@ + (void)readAttributeStartUpModeWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ModeSelect::Attributes::StartUpMode::TypeInfo; @@ -50056,9 +49666,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -50068,14 +49677,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeOnModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ModeSelect::Attributes::OnMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOnModeWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -50090,12 +49699,13 @@ - (void)writeAttributeOnModeWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -50112,13 +49722,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOnModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -50127,27 +49735,25 @@ - (void)subscribeAttributeOnModeWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ModeSelect::Attributes::OnMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ModeSelect::Attributes::OnMode::TypeInfo; - chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOnModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -50155,7 +49761,8 @@ + (void)readAttributeOnModeWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ModeSelect::Attributes::OnMode::TypeInfo; @@ -50164,9 +49771,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -50176,14 +49782,15 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ModeSelectGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ModeSelect::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -50193,27 +49800,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ModeSelect::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ModeSelectGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ModeSelect::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -50222,8 +49829,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRModeSelectGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ModeSelectGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ModeSelect::Attributes::GeneratedCommandList::TypeInfo; @@ -50232,9 +49840,8 @@ new MTRModeSelectGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -50244,14 +49851,15 @@ new MTRModeSelectGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ModeSelectAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ModeSelect::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -50261,27 +49869,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ModeSelect::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ModeSelectAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ModeSelect::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -50290,8 +49898,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRModeSelectAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ModeSelectAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ModeSelect::Attributes::AcceptedCommandList::TypeInfo; @@ -50300,9 +49909,8 @@ new MTRModeSelectAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -50312,14 +49920,14 @@ new MTRModeSelectAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRModeSelectAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRModeSelectAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ModeSelectAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ModeSelect::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -50328,27 +49936,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ModeSelect::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ModeSelectAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ModeSelect::Attributes::AttributeList::TypeInfo; - chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -50356,7 +49963,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRModeSelectAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRModeSelectAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ModeSelectAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ModeSelect::Attributes::AttributeList::TypeInfo; @@ -50365,9 +49973,8 @@ new MTRModeSelectAttributeListListAttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -50377,14 +49984,14 @@ new MTRModeSelectAttributeListListAttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ModeSelect::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -50393,26 +50000,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ModeSelect::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -50420,7 +50026,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ModeSelect::Attributes::FeatureMap::TypeInfo; @@ -50429,9 +50036,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -50441,14 +50047,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ModeSelect::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -50457,26 +50063,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ModeSelect::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -50484,7 +50089,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ModeSelect::Attributes::ClusterRevision::TypeInfo; @@ -50493,9 +50099,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -50935,12 +50540,13 @@ - (void)lockDoorWithParams:(MTRDoorLockClusterLockDoorParams * _Nullable)params { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::LockDoor::Type request; @@ -50959,23 +50565,23 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)unlockDoorWithParams:(MTRDoorLockClusterUnlockDoorParams * _Nullable)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::UnlockDoor::Type request; @@ -50994,23 +50600,23 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)unlockWithTimeoutWithParams:(MTRDoorLockClusterUnlockWithTimeoutParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::UnlockWithTimeout::Type request; @@ -51028,23 +50634,23 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = [self asByteSpan:params.pinCode]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)setWeekDayScheduleWithParams:(MTRDoorLockClusterSetWeekDayScheduleParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::SetWeekDaySchedule::Type request; @@ -51061,11 +50667,10 @@ new MTRCommandSuccessCallbackBridge( request.endHour = params.endHour.unsignedCharValue; request.endMinute = params.endMinute.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)getWeekDayScheduleWithParams:(MTRDoorLockClusterGetWeekDayScheduleParams *)params @@ -51074,8 +50679,10 @@ - (void)getWeekDayScheduleWithParams:(MTRDoorLockClusterGetWeekDayScheduleParams { // Make a copy of params before we go async. params = [params copy]; - new MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterGetWeekDayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::GetWeekDaySchedule::Type request; @@ -51087,11 +50694,10 @@ new MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(self.callbackQueu request.weekDayIndex = params.weekDayIndex.unsignedCharValue; request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)clearWeekDayScheduleWithParams:(MTRDoorLockClusterClearWeekDayScheduleParams *)params @@ -51099,12 +50705,13 @@ - (void)clearWeekDayScheduleWithParams:(MTRDoorLockClusterClearWeekDaySchedulePa { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::ClearWeekDaySchedule::Type request; @@ -51116,23 +50723,23 @@ new MTRCommandSuccessCallbackBridge( request.weekDayIndex = params.weekDayIndex.unsignedCharValue; request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)setYearDayScheduleWithParams:(MTRDoorLockClusterSetYearDayScheduleParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::SetYearDaySchedule::Type request; @@ -51146,11 +50753,10 @@ new MTRCommandSuccessCallbackBridge( request.localStartTime = params.localStartTime.unsignedIntValue; request.localEndTime = params.localEndTime.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)getYearDayScheduleWithParams:(MTRDoorLockClusterGetYearDayScheduleParams *)params @@ -51159,8 +50765,10 @@ - (void)getYearDayScheduleWithParams:(MTRDoorLockClusterGetYearDayScheduleParams { // Make a copy of params before we go async. params = [params copy]; - new MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterGetYearDayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::GetYearDaySchedule::Type request; @@ -51172,11 +50780,10 @@ new MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(self.callbackQueu request.yearDayIndex = params.yearDayIndex.unsignedCharValue; request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)clearYearDayScheduleWithParams:(MTRDoorLockClusterClearYearDayScheduleParams *)params @@ -51184,12 +50791,13 @@ - (void)clearYearDayScheduleWithParams:(MTRDoorLockClusterClearYearDaySchedulePa { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::ClearYearDaySchedule::Type request; @@ -51201,23 +50809,23 @@ new MTRCommandSuccessCallbackBridge( request.yearDayIndex = params.yearDayIndex.unsignedCharValue; request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)setHolidayScheduleWithParams:(MTRDoorLockClusterSetHolidayScheduleParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::SetHolidaySchedule::Type request; @@ -51232,11 +50840,10 @@ new MTRCommandSuccessCallbackBridge( request.operatingMode = static_cast>(params.operatingMode.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)getHolidayScheduleWithParams:(MTRDoorLockClusterGetHolidayScheduleParams *)params @@ -51245,8 +50852,10 @@ - (void)getHolidayScheduleWithParams:(MTRDoorLockClusterGetHolidayScheduleParams { // Make a copy of params before we go async. params = [params copy]; - new MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterGetHolidayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::GetHolidaySchedule::Type request; @@ -51257,11 +50866,10 @@ new MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(self.callbackQueu } request.holidayIndex = params.holidayIndex.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)clearHolidayScheduleWithParams:(MTRDoorLockClusterClearHolidayScheduleParams *)params @@ -51269,12 +50877,13 @@ - (void)clearHolidayScheduleWithParams:(MTRDoorLockClusterClearHolidaySchedulePa { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::ClearHolidaySchedule::Type request; @@ -51285,23 +50894,23 @@ new MTRCommandSuccessCallbackBridge( } request.holidayIndex = params.holidayIndex.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)setUserWithParams:(MTRDoorLockClusterSetUserParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::SetUser::Type request; @@ -51349,11 +50958,10 @@ new MTRCommandSuccessCallbackBridge( = static_cast>(params.credentialRule.unsignedCharValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)getUserWithParams:(MTRDoorLockClusterGetUserParams *)params @@ -51361,8 +50969,9 @@ - (void)getUserWithParams:(MTRDoorLockClusterGetUserParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRDoorLockClusterGetUserResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterGetUserResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoorLockClusterGetUserResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::GetUser::Type request; @@ -51373,23 +50982,23 @@ new MTRDoorLockClusterGetUserResponseCallbackBridge(self.callbackQueue, self.dev } request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)clearUserWithParams:(MTRDoorLockClusterClearUserParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::ClearUser::Type request; @@ -51403,11 +51012,10 @@ new MTRCommandSuccessCallbackBridge( } request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)setCredentialWithParams:(MTRDoorLockClusterSetCredentialParams *)params @@ -51416,8 +51024,10 @@ - (void)setCredentialWithParams:(MTRDoorLockClusterSetCredentialParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRDoorLockClusterSetCredentialResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterSetCredentialResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterSetCredentialResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::SetCredential::Type request; @@ -51455,11 +51065,10 @@ new MTRDoorLockClusterSetCredentialResponseCallbackBridge(self.callbackQueue, se nonNullValue_0 = static_cast>(params.userType.unsignedCharValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)getCredentialStatusWithParams:(MTRDoorLockClusterGetCredentialStatusParams *)params @@ -51468,8 +51077,10 @@ - (void)getCredentialStatusWithParams:(MTRDoorLockClusterGetCredentialStatusPara { // Make a copy of params before we go async. params = [params copy]; - new MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterGetCredentialStatusResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::GetCredentialStatus::Type request; @@ -51482,23 +51093,23 @@ new MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(self.callbackQue params.credential.credentialType.unsignedCharValue); request.credential.credentialIndex = params.credential.credentialIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)clearCredentialWithParams:(MTRDoorLockClusterClearCredentialParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::ClearCredential::Type request; @@ -51519,23 +51130,23 @@ new MTRCommandSuccessCallbackBridge( nonNullValue_0.credentialIndex = params.credential.credentialIndex.unsignedShortValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeLockStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableDoorLockClusterDlLockStateAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::LockState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLockStateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -51544,27 +51155,27 @@ - (void)subscribeAttributeLockStateWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::LockState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableDoorLockClusterDlLockStateAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::LockState::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLockStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -51572,8 +51183,9 @@ + (void)readAttributeLockStateWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NullableDoorLockClusterDlLockStateAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::LockState::TypeInfo; @@ -51582,9 +51194,8 @@ new MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -51594,14 +51205,14 @@ new MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge( - (void)readAttributeLockTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoorLockClusterDlLockTypeAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::LockType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLockTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -51610,27 +51221,26 @@ - (void)subscribeAttributeLockTypeWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::LockType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoorLockClusterDlLockTypeAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::LockType::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLockTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -51638,7 +51248,8 @@ + (void)readAttributeLockTypeWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(DoorLockClusterDlLockTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::LockType::TypeInfo; @@ -51647,9 +51258,8 @@ new MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(queue, completion, ^(Can path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -51659,14 +51269,14 @@ new MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(queue, completion, ^(Can - (void)readAttributeActuatorEnabledWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::ActuatorEnabled::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActuatorEnabledWithParams:(MTRSubscribeParams * _Nonnull)params @@ -51675,26 +51285,25 @@ - (void)subscribeAttributeActuatorEnabledWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::ActuatorEnabled::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActuatorEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -51702,7 +51311,8 @@ + (void)readAttributeActuatorEnabledWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::ActuatorEnabled::TypeInfo; @@ -51711,9 +51321,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -51723,14 +51332,15 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDoorStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableDoorLockClusterDlDoorStateAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::DoorState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDoorStateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -51739,27 +51349,27 @@ - (void)subscribeAttributeDoorStateWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::DoorState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableDoorLockClusterDlDoorStateAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::DoorState::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDoorStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -51767,8 +51377,9 @@ + (void)readAttributeDoorStateWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NullableDoorLockClusterDlDoorStateAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::DoorState::TypeInfo; @@ -51777,9 +51388,8 @@ new MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -51789,14 +51399,14 @@ new MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge( - (void)readAttributeDoorOpenEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::DoorOpenEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeDoorOpenEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -51811,12 +51421,13 @@ - (void)writeAttributeDoorOpenEventsWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -51828,13 +51439,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::DoorOpenEvents::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDoorOpenEventsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -51843,26 +51452,25 @@ - (void)subscribeAttributeDoorOpenEventsWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::DoorOpenEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDoorOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -51870,7 +51478,8 @@ + (void)readAttributeDoorOpenEventsWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::DoorOpenEvents::TypeInfo; @@ -51879,9 +51488,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -51891,14 +51499,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDoorClosedEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::DoorClosedEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeDoorClosedEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -51913,12 +51521,13 @@ - (void)writeAttributeDoorClosedEventsWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -51930,13 +51539,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::DoorClosedEvents::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDoorClosedEventsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -51945,26 +51552,25 @@ - (void)subscribeAttributeDoorClosedEventsWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::DoorClosedEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDoorClosedEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -51972,7 +51578,8 @@ + (void)readAttributeDoorClosedEventsWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::DoorClosedEvents::TypeInfo; @@ -51981,9 +51588,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -51993,14 +51599,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeOpenPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::OpenPeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOpenPeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -52015,12 +51621,13 @@ - (void)writeAttributeOpenPeriodWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -52032,13 +51639,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::OpenPeriod::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOpenPeriodWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52047,26 +51652,25 @@ - (void)subscribeAttributeOpenPeriodWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::OpenPeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52074,7 +51678,8 @@ + (void)readAttributeOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::OpenPeriod::TypeInfo; @@ -52083,9 +51688,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52096,14 +51700,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeNumberOfTotalUsersSupportedWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::NumberOfTotalUsersSupported::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfTotalUsersSupportedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52113,26 +51717,25 @@ - (void)subscribeAttributeNumberOfTotalUsersSupportedWithParams:(MTRSubscribePar { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::NumberOfTotalUsersSupported::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfTotalUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52141,7 +51744,8 @@ + (void)readAttributeNumberOfTotalUsersSupportedWithAttributeCache:(MTRAttribute completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::NumberOfTotalUsersSupported::TypeInfo; @@ -52150,9 +51754,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52163,14 +51766,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeNumberOfPINUsersSupportedWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::NumberOfPINUsersSupported::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfPINUsersSupportedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52180,26 +51783,25 @@ - (void)subscribeAttributeNumberOfPINUsersSupportedWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::NumberOfPINUsersSupported::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfPINUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52208,7 +51810,8 @@ + (void)readAttributeNumberOfPINUsersSupportedWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::NumberOfPINUsersSupported::TypeInfo; @@ -52217,9 +51820,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52230,14 +51832,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeNumberOfRFIDUsersSupportedWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::NumberOfRFIDUsersSupported::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfRFIDUsersSupportedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52247,26 +51849,25 @@ - (void)subscribeAttributeNumberOfRFIDUsersSupportedWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::NumberOfRFIDUsersSupported::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfRFIDUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52275,7 +51876,8 @@ + (void)readAttributeNumberOfRFIDUsersSupportedWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::NumberOfRFIDUsersSupported::TypeInfo; @@ -52284,9 +51886,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52297,14 +51898,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52315,26 +51916,25 @@ - (void)subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams:(MT { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache: @@ -52344,7 +51944,8 @@ + (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache: completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::TypeInfo; @@ -52353,9 +51954,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52366,14 +51966,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52384,26 +51984,25 @@ - (void)subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams:(MT { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache: @@ -52413,7 +52012,8 @@ + (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache: completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::TypeInfo; @@ -52422,9 +52022,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52435,14 +52034,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeNumberOfHolidaySchedulesSupportedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::NumberOfHolidaySchedulesSupported::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfHolidaySchedulesSupportedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52453,26 +52052,25 @@ - (void)subscribeAttributeNumberOfHolidaySchedulesSupportedWithParams:(MTRSubscr { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::NumberOfHolidaySchedulesSupported::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52481,7 +52079,8 @@ + (void)readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:(MTRAtt completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::NumberOfHolidaySchedulesSupported::TypeInfo; @@ -52490,9 +52089,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52502,14 +52100,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeMaxPINCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::MaxPINCodeLength::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxPINCodeLengthWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52518,26 +52116,25 @@ - (void)subscribeAttributeMaxPINCodeLengthWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::MaxPINCodeLength::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxPINCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52545,7 +52142,8 @@ + (void)readAttributeMaxPINCodeLengthWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::MaxPINCodeLength::TypeInfo; @@ -52554,9 +52152,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52566,14 +52163,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeMinPINCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::MinPINCodeLength::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinPINCodeLengthWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52582,26 +52179,25 @@ - (void)subscribeAttributeMinPINCodeLengthWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::MinPINCodeLength::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinPINCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52609,7 +52205,8 @@ + (void)readAttributeMinPINCodeLengthWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::MinPINCodeLength::TypeInfo; @@ -52618,9 +52215,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52630,14 +52226,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeMaxRFIDCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::MaxRFIDCodeLength::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxRFIDCodeLengthWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52646,26 +52242,25 @@ - (void)subscribeAttributeMaxRFIDCodeLengthWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::MaxRFIDCodeLength::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52673,7 +52268,8 @@ + (void)readAttributeMaxRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::MaxRFIDCodeLength::TypeInfo; @@ -52682,9 +52278,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52694,14 +52289,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeMinRFIDCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::MinRFIDCodeLength::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinRFIDCodeLengthWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52710,26 +52305,25 @@ - (void)subscribeAttributeMinRFIDCodeLengthWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::MinRFIDCodeLength::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52737,7 +52331,8 @@ + (void)readAttributeMinRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::MinRFIDCodeLength::TypeInfo; @@ -52746,9 +52341,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52759,14 +52353,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeCredentialRulesSupportWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockCredentialRulesSupportAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::CredentialRulesSupport::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCredentialRulesSupportWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52776,27 +52370,26 @@ - (void)subscribeAttributeCredentialRulesSupportWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::CredentialRulesSupport::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockCredentialRulesSupportAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::CredentialRulesSupport::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCredentialRulesSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52805,36 +52398,37 @@ + (void)readAttributeCredentialRulesSupportWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = DoorLock::Attributes::CredentialRulesSupport::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DoorLockCredentialRulesSupportAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = DoorLock::Attributes::CredentialRulesSupport::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeNumberOfCredentialsSupportedPerUserWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfCredentialsSupportedPerUserWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52845,26 +52439,25 @@ - (void)subscribeAttributeNumberOfCredentialsSupportedPerUserWithParams:(MTRSubs { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52873,7 +52466,8 @@ + (void)readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:(MTRA completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo; @@ -52882,9 +52476,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52894,14 +52487,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeLanguageWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::Language::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLanguageWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -52916,12 +52509,13 @@ - (void)writeAttributeLanguageWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -52933,13 +52527,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::Language::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLanguageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -52948,27 +52540,25 @@ - (void)subscribeAttributeLanguageWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::Language::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::Language::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLanguageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -52976,7 +52566,8 @@ + (void)readAttributeLanguageWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::Language::TypeInfo; @@ -52985,9 +52576,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -52997,14 +52587,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeLEDSettingsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::LEDSettings::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLEDSettingsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -53019,12 +52609,13 @@ - (void)writeAttributeLEDSettingsWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -53036,13 +52627,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::LEDSettings::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLEDSettingsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -53051,26 +52640,25 @@ - (void)subscribeAttributeLEDSettingsWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::LEDSettings::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLEDSettingsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -53078,7 +52666,8 @@ + (void)readAttributeLEDSettingsWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::LEDSettings::TypeInfo; @@ -53087,9 +52676,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -53099,14 +52687,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeAutoRelockTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::AutoRelockTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeAutoRelockTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -53121,12 +52709,13 @@ - (void)writeAttributeAutoRelockTimeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -53138,13 +52727,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::AutoRelockTime::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAutoRelockTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -53153,26 +52740,25 @@ - (void)subscribeAttributeAutoRelockTimeWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::AutoRelockTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAutoRelockTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -53180,7 +52766,8 @@ + (void)readAttributeAutoRelockTimeWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::AutoRelockTime::TypeInfo; @@ -53189,9 +52776,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -53201,14 +52787,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeSoundVolumeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::SoundVolume::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeSoundVolumeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -53223,12 +52809,13 @@ - (void)writeAttributeSoundVolumeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -53240,13 +52827,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::SoundVolume::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSoundVolumeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -53255,26 +52840,25 @@ - (void)subscribeAttributeSoundVolumeWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::SoundVolume::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSoundVolumeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -53282,7 +52866,8 @@ + (void)readAttributeSoundVolumeWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::SoundVolume::TypeInfo; @@ -53291,9 +52876,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -53303,14 +52887,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeOperatingModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterDlOperatingModeAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::OperatingMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOperatingModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -53325,12 +52909,13 @@ - (void)writeAttributeOperatingModeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -53342,13 +52927,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::OperatingMode::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOperatingModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -53357,27 +52940,26 @@ - (void)subscribeAttributeOperatingModeWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::OperatingMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterDlOperatingModeAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::OperatingMode::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOperatingModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -53385,36 +52967,38 @@ + (void)readAttributeOperatingModeWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = DoorLock::Attributes::OperatingMode::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DoorLockClusterDlOperatingModeAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = DoorLock::Attributes::OperatingMode::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeSupportedOperatingModesWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockSupportedOperatingModesAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::SupportedOperatingModes::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSupportedOperatingModesWithParams:(MTRSubscribeParams * _Nonnull)params @@ -53424,27 +53008,27 @@ - (void)subscribeAttributeSupportedOperatingModesWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::SupportedOperatingModes::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockSupportedOperatingModesAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::SupportedOperatingModes::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSupportedOperatingModesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -53453,36 +53037,38 @@ + (void)readAttributeSupportedOperatingModesWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = DoorLock::Attributes::SupportedOperatingModes::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DoorLockSupportedOperatingModesAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = DoorLock::Attributes::SupportedOperatingModes::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeDefaultConfigurationRegisterWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockDefaultConfigurationRegisterAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::DefaultConfigurationRegister::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDefaultConfigurationRegisterWithParams:(MTRSubscribeParams * _Nonnull)params @@ -53493,27 +53079,27 @@ - (void)subscribeAttributeDefaultConfigurationRegisterWithParams:(MTRSubscribePa { // Make a copy of params before we go async. params = [params copy]; - __block MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::DefaultConfigurationRegister::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockDefaultConfigurationRegisterAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::DefaultConfigurationRegister::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDefaultConfigurationRegisterWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -53522,8 +53108,9 @@ + (void)readAttributeDefaultConfigurationRegisterWithAttributeCache:(MTRAttribut completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DoorLockDefaultConfigurationRegisterAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::DefaultConfigurationRegister::TypeInfo; @@ -53532,9 +53119,8 @@ new MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -53545,14 +53131,14 @@ new MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge( - (void)readAttributeEnableLocalProgrammingWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::EnableLocalProgramming::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeEnableLocalProgrammingWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -53567,12 +53153,13 @@ - (void)writeAttributeEnableLocalProgrammingWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -53584,13 +53171,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::EnableLocalProgramming::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEnableLocalProgrammingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -53600,26 +53185,25 @@ - (void)subscribeAttributeEnableLocalProgrammingWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::EnableLocalProgramming::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEnableLocalProgrammingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -53628,7 +53212,8 @@ + (void)readAttributeEnableLocalProgrammingWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::EnableLocalProgramming::TypeInfo; @@ -53637,9 +53222,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -53649,14 +53233,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeEnableOneTouchLockingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::EnableOneTouchLocking::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeEnableOneTouchLockingWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -53671,12 +53255,13 @@ - (void)writeAttributeEnableOneTouchLockingWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -53688,13 +53273,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::EnableOneTouchLocking::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEnableOneTouchLockingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -53704,26 +53287,25 @@ - (void)subscribeAttributeEnableOneTouchLockingWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::EnableOneTouchLocking::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEnableOneTouchLockingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -53732,7 +53314,8 @@ + (void)readAttributeEnableOneTouchLockingWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::EnableOneTouchLocking::TypeInfo; @@ -53741,9 +53324,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -53753,14 +53335,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeEnableInsideStatusLEDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::EnableInsideStatusLED::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeEnableInsideStatusLEDWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -53775,12 +53357,13 @@ - (void)writeAttributeEnableInsideStatusLEDWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -53792,13 +53375,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::EnableInsideStatusLED::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEnableInsideStatusLEDWithParams:(MTRSubscribeParams * _Nonnull)params @@ -53808,26 +53389,25 @@ - (void)subscribeAttributeEnableInsideStatusLEDWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::EnableInsideStatusLED::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEnableInsideStatusLEDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -53836,7 +53416,8 @@ + (void)readAttributeEnableInsideStatusLEDWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::EnableInsideStatusLED::TypeInfo; @@ -53845,9 +53426,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -53858,14 +53438,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeEnablePrivacyModeButtonWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::EnablePrivacyModeButton::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeEnablePrivacyModeButtonWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -53880,12 +53460,13 @@ - (void)writeAttributeEnablePrivacyModeButtonWithValue:(NSNumber * _Nonnull)valu params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -53897,13 +53478,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::EnablePrivacyModeButton::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEnablePrivacyModeButtonWithParams:(MTRSubscribeParams * _Nonnull)params @@ -53913,26 +53492,25 @@ - (void)subscribeAttributeEnablePrivacyModeButtonWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::EnablePrivacyModeButton::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEnablePrivacyModeButtonWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -53941,7 +53519,8 @@ + (void)readAttributeEnablePrivacyModeButtonWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::EnablePrivacyModeButton::TypeInfo; @@ -53950,9 +53529,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -53963,14 +53541,15 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeLocalProgrammingFeaturesWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockLocalProgrammingFeaturesAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::LocalProgrammingFeatures::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLocalProgrammingFeaturesWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -53985,12 +53564,13 @@ - (void)writeAttributeLocalProgrammingFeaturesWithValue:(NSNumber * _Nonnull)val params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -54002,13 +53582,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::LocalProgrammingFeatures::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLocalProgrammingFeaturesWithParams:(MTRSubscribeParams * _Nonnull)params @@ -54018,27 +53596,27 @@ - (void)subscribeAttributeLocalProgrammingFeaturesWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::LocalProgrammingFeatures::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockLocalProgrammingFeaturesAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::LocalProgrammingFeatures::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLocalProgrammingFeaturesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -54047,8 +53625,9 @@ + (void)readAttributeLocalProgrammingFeaturesWithAttributeCache:(MTRAttributeCac completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DoorLockLocalProgrammingFeaturesAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::LocalProgrammingFeatures::TypeInfo; @@ -54057,9 +53636,8 @@ new MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -54069,14 +53647,14 @@ new MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge( - (void)readAttributeWrongCodeEntryLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::WrongCodeEntryLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeWrongCodeEntryLimitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -54091,12 +53669,13 @@ - (void)writeAttributeWrongCodeEntryLimitWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -54108,13 +53687,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::WrongCodeEntryLimit::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWrongCodeEntryLimitWithParams:(MTRSubscribeParams * _Nonnull)params @@ -54124,26 +53701,25 @@ - (void)subscribeAttributeWrongCodeEntryLimitWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::WrongCodeEntryLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWrongCodeEntryLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -54152,7 +53728,8 @@ + (void)readAttributeWrongCodeEntryLimitWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::WrongCodeEntryLimit::TypeInfo; @@ -54161,9 +53738,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -54174,14 +53750,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeUserCodeTemporaryDisableTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::UserCodeTemporaryDisableTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeUserCodeTemporaryDisableTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -54196,12 +53772,13 @@ - (void)writeAttributeUserCodeTemporaryDisableTimeWithValue:(NSNumber * _Nonnull params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -54213,13 +53790,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::UserCodeTemporaryDisableTime::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUserCodeTemporaryDisableTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -54230,26 +53805,25 @@ - (void)subscribeAttributeUserCodeTemporaryDisableTimeWithParams:(MTRSubscribePa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::UserCodeTemporaryDisableTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUserCodeTemporaryDisableTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -54258,7 +53832,8 @@ + (void)readAttributeUserCodeTemporaryDisableTimeWithAttributeCache:(MTRAttribut completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::UserCodeTemporaryDisableTime::TypeInfo; @@ -54267,9 +53842,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -54279,14 +53853,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeSendPINOverTheAirWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::SendPINOverTheAir::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeSendPINOverTheAirWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -54301,12 +53875,13 @@ - (void)writeAttributeSendPINOverTheAirWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -54318,13 +53893,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::SendPINOverTheAir::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSendPINOverTheAirWithParams:(MTRSubscribeParams * _Nonnull)params @@ -54333,26 +53906,25 @@ - (void)subscribeAttributeSendPINOverTheAirWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::SendPINOverTheAir::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSendPINOverTheAirWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -54360,7 +53932,8 @@ + (void)readAttributeSendPINOverTheAirWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::SendPINOverTheAir::TypeInfo; @@ -54369,9 +53942,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -54382,14 +53954,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRequirePINforRemoteOperationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::RequirePINforRemoteOperation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeRequirePINforRemoteOperationWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -54404,12 +53976,13 @@ - (void)writeAttributeRequirePINforRemoteOperationWithValue:(NSNumber * _Nonnull params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -54421,13 +53994,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::RequirePINforRemoteOperation::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRequirePINforRemoteOperationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -54438,26 +54009,25 @@ - (void)subscribeAttributeRequirePINforRemoteOperationWithParams:(MTRSubscribePa { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::RequirePINforRemoteOperation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRequirePINforRemoteOperationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -54466,7 +54036,8 @@ + (void)readAttributeRequirePINforRemoteOperationWithAttributeCache:(MTRAttribut completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::RequirePINforRemoteOperation::TypeInfo; @@ -54475,9 +54046,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -54487,14 +54057,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeExpiringUserTimeoutWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::ExpiringUserTimeout::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeExpiringUserTimeoutWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -54509,12 +54079,13 @@ - (void)writeAttributeExpiringUserTimeoutWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -54526,13 +54097,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = DoorLock::Attributes::ExpiringUserTimeout::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeExpiringUserTimeoutWithParams:(MTRSubscribeParams * _Nonnull)params @@ -54542,26 +54111,25 @@ - (void)subscribeAttributeExpiringUserTimeoutWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::ExpiringUserTimeout::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeExpiringUserTimeoutWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -54570,7 +54138,8 @@ + (void)readAttributeExpiringUserTimeoutWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::ExpiringUserTimeout::TypeInfo; @@ -54579,9 +54148,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -54591,14 +54159,15 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -54608,27 +54177,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -54637,8 +54206,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DoorLockGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::GeneratedCommandList::TypeInfo; @@ -54647,9 +54217,8 @@ new MTRDoorLockGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -54659,14 +54228,15 @@ new MTRDoorLockGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -54676,27 +54246,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -54705,35 +54275,36 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = DoorLock::Attributes::AcceptedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(DoorLockAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = DoorLock::Attributes::AcceptedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoorLockAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -54742,27 +54313,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = DoorLock::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoorLockAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = DoorLock::Attributes::AttributeList::TypeInfo; - chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -54770,7 +54340,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRDoorLockAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(DoorLockAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::AttributeList::TypeInfo; @@ -54779,9 +54350,8 @@ new MTRDoorLockAttributeListListAttributeCallbackBridge(queue, completion, ^(Can path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -54791,14 +54361,14 @@ new MTRDoorLockAttributeListListAttributeCallbackBridge(queue, completion, ^(Can - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -54807,26 +54377,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -54834,7 +54403,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::FeatureMap::TypeInfo; @@ -54843,9 +54413,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -54855,14 +54424,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = DoorLock::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -54871,26 +54440,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = DoorLock::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -54898,7 +54466,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = DoorLock::Attributes::ClusterRevision::TypeInfo; @@ -54907,9 +54476,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -56681,12 +56249,13 @@ - (void)upOrOpenWithParams:(MTRWindowCoveringClusterUpOrOpenParams * _Nullable)p { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::UpOrOpen::Type request; @@ -56696,11 +56265,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)downOrCloseWithCompletion:(MTRStatusCompletion)completion @@ -56712,12 +56280,13 @@ - (void)downOrCloseWithParams:(MTRWindowCoveringClusterDownOrCloseParams * _Null { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::DownOrClose::Type request; @@ -56727,11 +56296,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stopMotionWithCompletion:(MTRStatusCompletion)completion @@ -56742,12 +56310,13 @@ - (void)stopMotionWithParams:(MTRWindowCoveringClusterStopMotionParams * _Nullab { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::StopMotion::Type request; @@ -56757,23 +56326,23 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)goToLiftValueWithParams:(MTRWindowCoveringClusterGoToLiftValueParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::GoToLiftValue::Type request; @@ -56784,11 +56353,10 @@ new MTRCommandSuccessCallbackBridge( } request.liftValue = params.liftValue.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)goToLiftPercentageWithParams:(MTRWindowCoveringClusterGoToLiftPercentageParams *)params @@ -56796,12 +56364,13 @@ - (void)goToLiftPercentageWithParams:(MTRWindowCoveringClusterGoToLiftPercentage { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::GoToLiftPercentage::Type request; @@ -56812,23 +56381,23 @@ new MTRCommandSuccessCallbackBridge( } request.liftPercent100thsValue = params.liftPercent100thsValue.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)goToTiltValueWithParams:(MTRWindowCoveringClusterGoToTiltValueParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::GoToTiltValue::Type request; @@ -56839,11 +56408,10 @@ new MTRCommandSuccessCallbackBridge( } request.tiltValue = params.tiltValue.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)goToTiltPercentageWithParams:(MTRWindowCoveringClusterGoToTiltPercentageParams *)params @@ -56851,12 +56419,13 @@ - (void)goToTiltPercentageWithParams:(MTRWindowCoveringClusterGoToTiltPercentage { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::GoToTiltPercentage::Type request; @@ -56867,23 +56436,22 @@ new MTRCommandSuccessCallbackBridge( } request.tiltPercent100thsValue = params.tiltPercent100thsValue.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringClusterTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringClusterTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringClusterTypeAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::Type::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -56892,27 +56460,26 @@ - (void)subscribeAttributeTypeWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::Type::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringClusterTypeAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::Type::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -56920,7 +56487,8 @@ + (void)readAttributeTypeWithAttributeCache:(MTRAttributeCacheContainer *)attrib queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringClusterTypeAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringClusterTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(WindowCoveringClusterTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::Type::TypeInfo; @@ -56929,9 +56497,8 @@ new MTRWindowCoveringClusterTypeAttributeCallbackBridge(queue, completion, ^(Can path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -56942,14 +56509,14 @@ new MTRWindowCoveringClusterTypeAttributeCallbackBridge(queue, completion, ^(Can - (void)readAttributePhysicalClosedLimitLiftWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitLift::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePhysicalClosedLimitLiftWithParams:(MTRSubscribeParams * _Nonnull)params @@ -56959,26 +56526,25 @@ - (void)subscribeAttributePhysicalClosedLimitLiftWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitLift::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePhysicalClosedLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -56987,7 +56553,8 @@ + (void)readAttributePhysicalClosedLimitLiftWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitLift::TypeInfo; @@ -56996,9 +56563,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57009,14 +56575,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePhysicalClosedLimitTiltWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitTilt::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePhysicalClosedLimitTiltWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57026,26 +56592,25 @@ - (void)subscribeAttributePhysicalClosedLimitTiltWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitTilt::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePhysicalClosedLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57054,7 +56619,8 @@ + (void)readAttributePhysicalClosedLimitTiltWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitTilt::TypeInfo; @@ -57063,9 +56629,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57075,14 +56640,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeCurrentPositionLiftWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::CurrentPositionLift::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentPositionLiftWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57092,27 +56657,25 @@ - (void)subscribeAttributeCurrentPositionLiftWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::CurrentPositionLift::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::CurrentPositionLift::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentPositionLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57121,7 +56684,8 @@ + (void)readAttributeCurrentPositionLiftWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::CurrentPositionLift::TypeInfo; @@ -57130,9 +56694,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57142,14 +56705,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeCurrentPositionTiltWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::CurrentPositionTilt::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentPositionTiltWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57159,27 +56722,25 @@ - (void)subscribeAttributeCurrentPositionTiltWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::CurrentPositionTilt::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::CurrentPositionTilt::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentPositionTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57188,7 +56749,8 @@ + (void)readAttributeCurrentPositionTiltWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::CurrentPositionTilt::TypeInfo; @@ -57197,9 +56759,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57210,14 +56771,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNumberOfActuationsLiftWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::NumberOfActuationsLift::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfActuationsLiftWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57227,26 +56788,25 @@ - (void)subscribeAttributeNumberOfActuationsLiftWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WindowCovering::Attributes::NumberOfActuationsLift::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfActuationsLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57255,7 +56815,8 @@ + (void)readAttributeNumberOfActuationsLiftWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::NumberOfActuationsLift::TypeInfo; @@ -57264,9 +56825,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57277,14 +56837,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeNumberOfActuationsTiltWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::NumberOfActuationsTilt::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfActuationsTiltWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57294,26 +56854,25 @@ - (void)subscribeAttributeNumberOfActuationsTiltWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WindowCovering::Attributes::NumberOfActuationsTilt::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfActuationsTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57322,7 +56881,8 @@ + (void)readAttributeNumberOfActuationsTiltWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::NumberOfActuationsTilt::TypeInfo; @@ -57331,9 +56891,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57343,14 +56902,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeConfigStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringConfigStatusAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringConfigStatusAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringConfigStatusAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::ConfigStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeConfigStatusWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57359,27 +56918,26 @@ - (void)subscribeAttributeConfigStatusWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::ConfigStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringConfigStatusAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::ConfigStatus::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeConfigStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57387,7 +56945,8 @@ + (void)readAttributeConfigStatusWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringConfigStatusAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringConfigStatusAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(WindowCoveringConfigStatusAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::ConfigStatus::TypeInfo; @@ -57396,9 +56955,8 @@ new MTRWindowCoveringConfigStatusAttributeCallbackBridge(queue, completion, ^(Ca path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57409,14 +56967,14 @@ new MTRWindowCoveringConfigStatusAttributeCallbackBridge(queue, completion, ^(Ca - (void)readAttributeCurrentPositionLiftPercentageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercentage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentPositionLiftPercentageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57427,27 +56985,25 @@ - (void)subscribeAttributeCurrentPositionLiftPercentageWithParams:(MTRSubscribeP { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercentage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercentage::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentPositionLiftPercentageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57456,7 +57012,8 @@ + (void)readAttributeCurrentPositionLiftPercentageWithAttributeCache:(MTRAttribu completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercentage::TypeInfo; @@ -57465,9 +57022,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57478,14 +57034,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeCurrentPositionTiltPercentageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercentage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentPositionTiltPercentageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57496,27 +57052,25 @@ - (void)subscribeAttributeCurrentPositionTiltPercentageWithParams:(MTRSubscribeP { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercentage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercentage::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentPositionTiltPercentageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57525,7 +57079,8 @@ + (void)readAttributeCurrentPositionTiltPercentageWithAttributeCache:(MTRAttribu completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercentage::TypeInfo; @@ -57534,9 +57089,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57546,14 +57100,15 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeOperationalStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringOperationalStatusAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringOperationalStatusAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WindowCoveringOperationalStatusAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::OperationalStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOperationalStatusWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57562,27 +57117,27 @@ - (void)subscribeAttributeOperationalStatusWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::OperationalStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WindowCoveringOperationalStatusAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::OperationalStatus::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOperationalStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57590,36 +57145,37 @@ + (void)readAttributeOperationalStatusWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringOperationalStatusAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = WindowCovering::Attributes::OperationalStatus::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRWindowCoveringOperationalStatusAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(WindowCoveringOperationalStatusAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = WindowCovering::Attributes::OperationalStatus::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeTargetPositionLiftPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::TargetPositionLiftPercent100ths::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTargetPositionLiftPercent100thsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57630,27 +57186,25 @@ - (void)subscribeAttributeTargetPositionLiftPercent100thsWithParams:(MTRSubscrib { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::TargetPositionLiftPercent100ths::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::TargetPositionLiftPercent100ths::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTargetPositionLiftPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57659,7 +57213,8 @@ + (void)readAttributeTargetPositionLiftPercent100thsWithAttributeCache:(MTRAttri completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::TargetPositionLiftPercent100ths::TypeInfo; @@ -57668,9 +57223,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57681,14 +57235,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeTargetPositionTiltPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::TargetPositionTiltPercent100ths::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTargetPositionTiltPercent100thsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57699,27 +57253,25 @@ - (void)subscribeAttributeTargetPositionTiltPercent100thsWithParams:(MTRSubscrib { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::TargetPositionTiltPercent100ths::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::TargetPositionTiltPercent100ths::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTargetPositionTiltPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57728,7 +57280,8 @@ + (void)readAttributeTargetPositionTiltPercent100thsWithAttributeCache:(MTRAttri completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::TargetPositionTiltPercent100ths::TypeInfo; @@ -57737,9 +57290,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57749,14 +57301,15 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeEndProductTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WindowCoveringClusterEndProductTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::EndProductType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEndProductTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57765,27 +57318,27 @@ - (void)subscribeAttributeEndProductTypeWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::EndProductType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WindowCoveringClusterEndProductTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::EndProductType::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEndProductTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57793,8 +57346,9 @@ + (void)readAttributeEndProductTypeWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(WindowCoveringClusterEndProductTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::EndProductType::TypeInfo; @@ -57803,9 +57357,8 @@ new MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57816,14 +57369,14 @@ new MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge( - (void)readAttributeCurrentPositionLiftPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercent100ths::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentPositionLiftPercent100thsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57834,27 +57387,25 @@ - (void)subscribeAttributeCurrentPositionLiftPercent100thsWithParams:(MTRSubscri { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercent100ths::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercent100ths::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentPositionLiftPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57863,7 +57414,8 @@ + (void)readAttributeCurrentPositionLiftPercent100thsWithAttributeCache:(MTRAttr completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercent100ths::TypeInfo; @@ -57872,9 +57424,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57885,14 +57436,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeCurrentPositionTiltPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercent100ths::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentPositionTiltPercent100thsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57903,27 +57454,25 @@ - (void)subscribeAttributeCurrentPositionTiltPercent100thsWithParams:(MTRSubscri { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercent100ths::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercent100ths::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentPositionTiltPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57932,7 +57481,8 @@ + (void)readAttributeCurrentPositionTiltPercent100thsWithAttributeCache:(MTRAttr completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercent100ths::TypeInfo; @@ -57941,9 +57491,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -57954,14 +57503,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeInstalledOpenLimitLiftWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitLift::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInstalledOpenLimitLiftWithParams:(MTRSubscribeParams * _Nonnull)params @@ -57971,26 +57520,25 @@ - (void)subscribeAttributeInstalledOpenLimitLiftWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitLift::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInstalledOpenLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -57999,7 +57547,8 @@ + (void)readAttributeInstalledOpenLimitLiftWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitLift::TypeInfo; @@ -58008,9 +57557,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -58021,14 +57569,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInstalledClosedLimitLiftWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitLift::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInstalledClosedLimitLiftWithParams:(MTRSubscribeParams * _Nonnull)params @@ -58038,26 +57586,25 @@ - (void)subscribeAttributeInstalledClosedLimitLiftWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitLift::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInstalledClosedLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -58066,7 +57613,8 @@ + (void)readAttributeInstalledClosedLimitLiftWithAttributeCache:(MTRAttributeCac completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitLift::TypeInfo; @@ -58075,9 +57623,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -58088,14 +57635,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInstalledOpenLimitTiltWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitTilt::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInstalledOpenLimitTiltWithParams:(MTRSubscribeParams * _Nonnull)params @@ -58105,26 +57652,25 @@ - (void)subscribeAttributeInstalledOpenLimitTiltWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitTilt::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInstalledOpenLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -58133,7 +57679,8 @@ + (void)readAttributeInstalledOpenLimitTiltWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitTilt::TypeInfo; @@ -58142,9 +57689,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -58155,14 +57701,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInstalledClosedLimitTiltWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitTilt::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInstalledClosedLimitTiltWithParams:(MTRSubscribeParams * _Nonnull)params @@ -58172,26 +57718,25 @@ - (void)subscribeAttributeInstalledClosedLimitTiltWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitTilt::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInstalledClosedLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -58200,7 +57745,8 @@ + (void)readAttributeInstalledClosedLimitTiltWithAttributeCache:(MTRAttributeCac completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitTilt::TypeInfo; @@ -58209,9 +57755,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -58221,14 +57766,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringModeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringModeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringModeAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::Mode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -58243,12 +57788,13 @@ - (void)writeAttributeModeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -58260,13 +57806,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = WindowCovering::Attributes::Mode::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -58275,27 +57819,25 @@ - (void)subscribeAttributeModeWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRWindowCoveringModeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWindowCoveringModeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::Mode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWindowCoveringModeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringModeAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::Mode::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWindowCoveringModeAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWindowCoveringModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWindowCoveringModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -58303,7 +57845,8 @@ + (void)readAttributeModeWithAttributeCache:(MTRAttributeCacheContainer *)attrib queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringModeAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringModeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(WindowCoveringModeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::Mode::TypeInfo; @@ -58312,9 +57855,8 @@ new MTRWindowCoveringModeAttributeCallbackBridge(queue, completion, ^(Cancelable path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -58324,14 +57866,14 @@ new MTRWindowCoveringModeAttributeCallbackBridge(queue, completion, ^(Cancelable - (void)readAttributeSafetyStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringSafetyStatusAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringSafetyStatusAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringSafetyStatusAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::SafetyStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSafetyStatusWithParams:(MTRSubscribeParams * _Nonnull)params @@ -58340,27 +57882,26 @@ - (void)subscribeAttributeSafetyStatusWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::SafetyStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringSafetyStatusAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::SafetyStatus::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -58368,7 +57909,8 @@ + (void)readAttributeSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringSafetyStatusAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringSafetyStatusAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(WindowCoveringSafetyStatusAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::SafetyStatus::TypeInfo; @@ -58377,9 +57919,8 @@ new MTRWindowCoveringSafetyStatusAttributeCallbackBridge(queue, completion, ^(Ca path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -58389,14 +57930,15 @@ new MTRWindowCoveringSafetyStatusAttributeCallbackBridge(queue, completion, ^(Ca - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WindowCoveringGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -58406,27 +57948,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WindowCoveringGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -58435,8 +57978,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(WindowCoveringGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::GeneratedCommandList::TypeInfo; @@ -58445,9 +57989,8 @@ new MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -58457,14 +58000,15 @@ new MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WindowCoveringAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -58474,27 +58018,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WindowCoveringAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -58503,8 +58047,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(WindowCoveringAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::AcceptedCommandList::TypeInfo; @@ -58513,9 +58058,8 @@ new MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -58525,14 +58069,15 @@ new MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWindowCoveringAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WindowCoveringAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -58541,27 +58086,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WindowCovering::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WindowCoveringAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WindowCovering::Attributes::AttributeList::TypeInfo; - chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -58569,35 +58114,36 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWindowCoveringAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = WindowCovering::Attributes::AttributeList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRWindowCoveringAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(WindowCoveringAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = WindowCovering::Attributes::AttributeList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -58606,26 +58152,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WindowCovering::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -58633,7 +58178,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::FeatureMap::TypeInfo; @@ -58642,9 +58188,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -58654,14 +58199,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WindowCovering::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -58670,26 +58215,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WindowCovering::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -58697,7 +58241,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WindowCovering::Attributes::ClusterRevision::TypeInfo; @@ -58706,9 +58251,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -59752,12 +59296,13 @@ - (void)barrierControlGoToPercentWithParams:(MTRBarrierControlClusterBarrierCont { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; BarrierControl::Commands::BarrierControlGoToPercent::Type request; @@ -59768,11 +59313,10 @@ new MTRCommandSuccessCallbackBridge( } request.percentOpen = params.percentOpen.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)barrierControlStopWithCompletion:(MTRStatusCompletion)completion @@ -59784,12 +59328,13 @@ - (void)barrierControlStopWithParams:(MTRBarrierControlClusterBarrierControlStop { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; BarrierControl::Commands::BarrierControlStop::Type request; @@ -59799,23 +59344,22 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeBarrierMovingStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::BarrierMovingState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBarrierMovingStateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -59825,26 +59369,25 @@ - (void)subscribeAttributeBarrierMovingStateWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::BarrierMovingState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBarrierMovingStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -59853,7 +59396,8 @@ + (void)readAttributeBarrierMovingStateWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::BarrierMovingState::TypeInfo; @@ -59862,9 +59406,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -59874,14 +59417,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeBarrierSafetyStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::BarrierSafetyStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBarrierSafetyStatusWithParams:(MTRSubscribeParams * _Nonnull)params @@ -59891,26 +59434,25 @@ - (void)subscribeAttributeBarrierSafetyStatusWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::BarrierSafetyStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBarrierSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -59919,7 +59461,8 @@ + (void)readAttributeBarrierSafetyStatusWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::BarrierSafetyStatus::TypeInfo; @@ -59928,9 +59471,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -59940,14 +59482,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBarrierCapabilitiesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::BarrierCapabilities::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBarrierCapabilitiesWithParams:(MTRSubscribeParams * _Nonnull)params @@ -59957,26 +59499,25 @@ - (void)subscribeAttributeBarrierCapabilitiesWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::BarrierCapabilities::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBarrierCapabilitiesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -59985,7 +59526,8 @@ + (void)readAttributeBarrierCapabilitiesWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::BarrierCapabilities::TypeInfo; @@ -59994,9 +59536,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -60006,14 +59547,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeBarrierOpenEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::BarrierOpenEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBarrierOpenEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -60028,12 +59569,13 @@ - (void)writeAttributeBarrierOpenEventsWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -60045,13 +59587,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BarrierControl::Attributes::BarrierOpenEvents::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBarrierOpenEventsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60060,26 +59600,25 @@ - (void)subscribeAttributeBarrierOpenEventsWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::BarrierOpenEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBarrierOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -60087,7 +59626,8 @@ + (void)readAttributeBarrierOpenEventsWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::BarrierOpenEvents::TypeInfo; @@ -60096,9 +59636,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -60108,14 +59647,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBarrierCloseEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::BarrierCloseEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBarrierCloseEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -60130,12 +59669,13 @@ - (void)writeAttributeBarrierCloseEventsWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -60147,13 +59687,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BarrierControl::Attributes::BarrierCloseEvents::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBarrierCloseEventsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60163,26 +59701,25 @@ - (void)subscribeAttributeBarrierCloseEventsWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::BarrierCloseEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBarrierCloseEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -60191,7 +59728,8 @@ + (void)readAttributeBarrierCloseEventsWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::BarrierCloseEvents::TypeInfo; @@ -60200,9 +59738,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -60213,14 +59750,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBarrierCommandOpenEventsWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::BarrierCommandOpenEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBarrierCommandOpenEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -60235,12 +59772,13 @@ - (void)writeAttributeBarrierCommandOpenEventsWithValue:(NSNumber * _Nonnull)val params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -60252,13 +59790,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BarrierControl::Attributes::BarrierCommandOpenEvents::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBarrierCommandOpenEventsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60268,26 +59804,25 @@ - (void)subscribeAttributeBarrierCommandOpenEventsWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::BarrierCommandOpenEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBarrierCommandOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -60296,7 +59831,8 @@ + (void)readAttributeBarrierCommandOpenEventsWithAttributeCache:(MTRAttributeCac completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::BarrierCommandOpenEvents::TypeInfo; @@ -60305,9 +59841,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -60318,14 +59853,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBarrierCommandCloseEventsWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::BarrierCommandCloseEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBarrierCommandCloseEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -60340,12 +59875,13 @@ - (void)writeAttributeBarrierCommandCloseEventsWithValue:(NSNumber * _Nonnull)va params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -60357,13 +59893,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BarrierControl::Attributes::BarrierCommandCloseEvents::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBarrierCommandCloseEventsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60373,26 +59907,25 @@ - (void)subscribeAttributeBarrierCommandCloseEventsWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::BarrierCommandCloseEvents::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBarrierCommandCloseEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -60401,7 +59934,8 @@ + (void)readAttributeBarrierCommandCloseEventsWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::BarrierCommandCloseEvents::TypeInfo; @@ -60410,9 +59944,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -60422,14 +59955,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBarrierOpenPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::BarrierOpenPeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBarrierOpenPeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -60444,12 +59977,13 @@ - (void)writeAttributeBarrierOpenPeriodWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -60461,13 +59995,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BarrierControl::Attributes::BarrierOpenPeriod::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBarrierOpenPeriodWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60476,26 +60008,25 @@ - (void)subscribeAttributeBarrierOpenPeriodWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::BarrierOpenPeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBarrierOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -60503,7 +60034,8 @@ + (void)readAttributeBarrierOpenPeriodWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::BarrierOpenPeriod::TypeInfo; @@ -60512,9 +60044,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -60524,14 +60055,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBarrierClosePeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::BarrierClosePeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBarrierClosePeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -60546,12 +60077,13 @@ - (void)writeAttributeBarrierClosePeriodWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -60563,13 +60095,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BarrierControl::Attributes::BarrierClosePeriod::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBarrierClosePeriodWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60579,26 +60109,25 @@ - (void)subscribeAttributeBarrierClosePeriodWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::BarrierClosePeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBarrierClosePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -60607,7 +60136,8 @@ + (void)readAttributeBarrierClosePeriodWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::BarrierClosePeriod::TypeInfo; @@ -60616,9 +60146,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -60628,14 +60157,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBarrierPositionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::BarrierPosition::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBarrierPositionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60644,26 +60173,25 @@ - (void)subscribeAttributeBarrierPositionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::BarrierPosition::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBarrierPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -60671,7 +60199,8 @@ + (void)readAttributeBarrierPositionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::BarrierPosition::TypeInfo; @@ -60680,9 +60209,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -60692,14 +60220,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BarrierControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60709,27 +60238,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BarrierControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BarrierControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BarrierControl::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -60738,8 +60268,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BarrierControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::GeneratedCommandList::TypeInfo; @@ -60748,9 +60279,8 @@ new MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -60760,14 +60290,15 @@ new MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BarrierControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60777,27 +60308,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BarrierControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BarrierControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BarrierControl::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -60806,8 +60337,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BarrierControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::AcceptedCommandList::TypeInfo; @@ -60816,9 +60348,8 @@ new MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -60828,14 +60359,15 @@ new MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBarrierControlAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBarrierControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BarrierControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60844,27 +60376,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BarrierControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BarrierControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BarrierControl::Attributes::AttributeList::TypeInfo; - chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -60872,35 +60404,36 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBarrierControlAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = BarrierControl::Attributes::AttributeList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRBarrierControlAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BarrierControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = BarrierControl::Attributes::AttributeList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60909,26 +60442,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -60936,7 +60468,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::FeatureMap::TypeInfo; @@ -60945,9 +60478,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -60957,14 +60489,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BarrierControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -60973,26 +60505,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BarrierControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -61000,7 +60531,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BarrierControl::Attributes::ClusterRevision::TypeInfo; @@ -61009,9 +60541,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -61659,14 +61190,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeMaxPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MaxPressure::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxPressureWithParams:(MTRSubscribeParams * _Nonnull)params @@ -61675,27 +61206,25 @@ - (void)subscribeAttributeMaxPressureWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MaxPressure::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MaxPressure::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -61703,7 +61232,8 @@ + (void)readAttributeMaxPressureWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MaxPressure::TypeInfo; @@ -61712,9 +61242,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -61724,14 +61253,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MaxSpeed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxSpeedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -61740,27 +61269,25 @@ - (void)subscribeAttributeMaxSpeedWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MaxSpeed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MaxSpeed::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -61768,7 +61295,8 @@ + (void)readAttributeMaxSpeedWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MaxSpeed::TypeInfo; @@ -61777,9 +61305,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -61789,14 +61316,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MaxFlow::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxFlowWithParams:(MTRSubscribeParams * _Nonnull)params @@ -61805,27 +61332,25 @@ - (void)subscribeAttributeMaxFlowWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MaxFlow::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MaxFlow::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -61833,7 +61358,8 @@ + (void)readAttributeMaxFlowWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MaxFlow::TypeInfo; @@ -61842,9 +61368,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -61854,14 +61379,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMinConstPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstPressure::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinConstPressureWithParams:(MTRSubscribeParams * _Nonnull)params @@ -61870,27 +61395,25 @@ - (void)subscribeAttributeMinConstPressureWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstPressure::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstPressure::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinConstPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -61898,7 +61421,8 @@ + (void)readAttributeMinConstPressureWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstPressure::TypeInfo; @@ -61907,9 +61431,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -61919,14 +61442,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxConstPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstPressure::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxConstPressureWithParams:(MTRSubscribeParams * _Nonnull)params @@ -61935,27 +61458,25 @@ - (void)subscribeAttributeMaxConstPressureWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstPressure::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstPressure::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxConstPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -61963,7 +61484,8 @@ + (void)readAttributeMaxConstPressureWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstPressure::TypeInfo; @@ -61972,9 +61494,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -61984,14 +61505,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMinCompPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MinCompPressure::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinCompPressureWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62000,27 +61521,25 @@ - (void)subscribeAttributeMinCompPressureWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MinCompPressure::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MinCompPressure::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinCompPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62028,7 +61547,8 @@ + (void)readAttributeMinCompPressureWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MinCompPressure::TypeInfo; @@ -62037,9 +61557,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62049,14 +61568,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxCompPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MaxCompPressure::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxCompPressureWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62065,27 +61584,25 @@ - (void)subscribeAttributeMaxCompPressureWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MaxCompPressure::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MaxCompPressure::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxCompPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62093,7 +61610,8 @@ + (void)readAttributeMaxCompPressureWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MaxCompPressure::TypeInfo; @@ -62102,9 +61620,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62114,14 +61631,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMinConstSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstSpeed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinConstSpeedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62130,27 +61647,25 @@ - (void)subscribeAttributeMinConstSpeedWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstSpeed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstSpeed::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinConstSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62158,7 +61673,8 @@ + (void)readAttributeMinConstSpeedWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstSpeed::TypeInfo; @@ -62167,9 +61683,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62179,14 +61694,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxConstSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstSpeed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxConstSpeedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62195,27 +61710,25 @@ - (void)subscribeAttributeMaxConstSpeedWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstSpeed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstSpeed::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxConstSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62223,7 +61736,8 @@ + (void)readAttributeMaxConstSpeedWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstSpeed::TypeInfo; @@ -62232,9 +61746,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62244,14 +61757,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMinConstFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstFlow::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinConstFlowWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62260,27 +61773,25 @@ - (void)subscribeAttributeMinConstFlowWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstFlow::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstFlow::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinConstFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62288,7 +61799,8 @@ + (void)readAttributeMinConstFlowWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstFlow::TypeInfo; @@ -62297,9 +61809,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62309,14 +61820,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxConstFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstFlow::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxConstFlowWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62325,27 +61836,25 @@ - (void)subscribeAttributeMaxConstFlowWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstFlow::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstFlow::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxConstFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62353,7 +61862,8 @@ + (void)readAttributeMaxConstFlowWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstFlow::TypeInfo; @@ -62362,9 +61872,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62374,14 +61883,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMinConstTempWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstTemp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinConstTempWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62390,27 +61899,25 @@ - (void)subscribeAttributeMinConstTempWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstTemp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstTemp::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinConstTempWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62418,7 +61925,8 @@ + (void)readAttributeMinConstTempWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstTemp::TypeInfo; @@ -62427,9 +61935,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62439,14 +61946,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxConstTempWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstTemp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxConstTempWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62455,27 +61962,25 @@ - (void)subscribeAttributeMaxConstTempWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstTemp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstTemp::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxConstTempWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62483,7 +61988,8 @@ + (void)readAttributeMaxConstTempWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstTemp::TypeInfo; @@ -62492,9 +61998,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62504,14 +62009,15 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributePumpStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlPumpStatusAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::PumpStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePumpStatusWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62520,27 +62026,27 @@ - (void)subscribeAttributePumpStatusWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::PumpStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlPumpStatusAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::PumpStatus::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePumpStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62548,8 +62054,9 @@ + (void)readAttributePumpStatusWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PumpConfigurationAndControlPumpStatusAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::PumpStatus::TypeInfo; @@ -62558,9 +62065,8 @@ new MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62571,15 +62077,16 @@ new MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge( - (void)readAttributeEffectiveOperationModeWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveOperationMode::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveOperationMode::TypeInfo; + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEffectiveOperationModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62589,30 +62096,29 @@ - (void)subscribeAttributeEffectiveOperationModeWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveOperationMode::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveOperationMode::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEffectiveOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62621,8 +62127,9 @@ + (void)readAttributeEffectiveOperationModeWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveOperationMode::TypeInfo; @@ -62631,10 +62138,8 @@ new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridg path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62644,14 +62149,15 @@ new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridg - (void)readAttributeEffectiveControlModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveControlMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEffectiveControlModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62661,30 +62167,28 @@ - (void)subscribeAttributeEffectiveControlModeWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveControlMode::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveControlMode::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEffectiveControlModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62693,8 +62197,9 @@ + (void)readAttributeEffectiveControlModeWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveControlMode::TypeInfo; @@ -62703,10 +62208,8 @@ new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62716,14 +62219,14 @@ new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge( - (void)readAttributeCapacityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::Capacity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCapacityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62732,27 +62235,25 @@ - (void)subscribeAttributeCapacityWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::Capacity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::Capacity::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62760,7 +62261,8 @@ + (void)readAttributeCapacityWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::Capacity::TypeInfo; @@ -62769,9 +62271,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62781,14 +62282,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::Speed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSpeedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62797,27 +62298,25 @@ - (void)subscribeAttributeSpeedWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::Speed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::Speed::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62825,7 +62324,8 @@ + (void)readAttributeSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::Speed::TypeInfo; @@ -62834,9 +62334,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62846,14 +62345,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeLifetimeRunningHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeRunningHours::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLifetimeRunningHoursWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -62868,12 +62367,13 @@ - (void)writeAttributeLifetimeRunningHoursWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -62890,13 +62390,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLifetimeRunningHoursWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62906,27 +62404,25 @@ - (void)subscribeAttributeLifetimeRunningHoursWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeRunningHours::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeRunningHours::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLifetimeRunningHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -62935,7 +62431,8 @@ + (void)readAttributeLifetimeRunningHoursWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeRunningHours::TypeInfo; @@ -62944,9 +62441,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -62956,14 +62452,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::Power::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePowerWithParams:(MTRSubscribeParams * _Nonnull)params @@ -62972,27 +62468,25 @@ - (void)subscribeAttributePowerWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::Power::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::Power::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -63000,7 +62494,8 @@ + (void)readAttributePowerWithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::Power::TypeInfo; @@ -63009,9 +62504,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -63022,14 +62516,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeLifetimeEnergyConsumedWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLifetimeEnergyConsumedWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -63044,12 +62538,13 @@ - (void)writeAttributeLifetimeEnergyConsumedWithValue:(NSNumber * _Nullable)valu params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -63066,13 +62561,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLifetimeEnergyConsumedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -63082,27 +62575,25 @@ - (void)subscribeAttributeLifetimeEnergyConsumedWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLifetimeEnergyConsumedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -63111,7 +62602,8 @@ + (void)readAttributeLifetimeEnergyConsumedWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::TypeInfo; @@ -63120,9 +62612,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -63132,15 +62623,16 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeOperationModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = PumpConfigurationAndControl::Attributes::OperationMode::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = PumpConfigurationAndControl::Attributes::OperationMode::TypeInfo; + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOperationModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -63155,12 +62647,13 @@ - (void)writeAttributeOperationModeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -63172,13 +62665,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = PumpConfigurationAndControl::Attributes::OperationMode::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOperationModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -63187,30 +62678,29 @@ - (void)subscribeAttributeOperationModeWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::OperationMode::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::OperationMode::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -63218,8 +62708,9 @@ + (void)readAttributeOperationModeWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::OperationMode::TypeInfo; @@ -63228,10 +62719,8 @@ new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridg path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -63241,14 +62730,15 @@ new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridg - (void)readAttributeControlModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::ControlMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeControlModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -63263,12 +62753,13 @@ - (void)writeAttributeControlModeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -63280,13 +62771,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = PumpConfigurationAndControl::Attributes::ControlMode::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeControlModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -63295,30 +62784,28 @@ - (void)subscribeAttributeControlModeWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::ControlMode::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::ControlMode::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeControlModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -63326,8 +62813,9 @@ + (void)readAttributeControlModeWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::ControlMode::TypeInfo; @@ -63336,10 +62824,8 @@ new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -63349,15 +62835,16 @@ new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge( - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = PumpConfigurationAndControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = PumpConfigurationAndControl::Attributes::GeneratedCommandList::TypeInfo; + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -63367,30 +62854,29 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -63399,8 +62885,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PumpConfigurationAndControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::GeneratedCommandList::TypeInfo; @@ -63409,10 +62896,8 @@ new MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridg path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -63422,14 +62907,15 @@ new MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridg - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -63439,30 +62925,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -63471,8 +62955,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PumpConfigurationAndControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::AcceptedCommandList::TypeInfo; @@ -63481,10 +62966,8 @@ new MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -63494,14 +62977,15 @@ new MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -63510,28 +62994,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PumpConfigurationAndControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PumpConfigurationAndControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PumpConfigurationAndControl::Attributes::AttributeList::TypeInfo; - chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -63539,8 +63023,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PumpConfigurationAndControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::AttributeList::TypeInfo; @@ -63549,9 +63034,8 @@ new MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -63561,14 +63045,14 @@ new MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -63577,26 +63061,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PumpConfigurationAndControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -63604,7 +63087,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::FeatureMap::TypeInfo; @@ -63613,9 +63097,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -63625,14 +63108,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PumpConfigurationAndControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -63641,26 +63124,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PumpConfigurationAndControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -63668,7 +63150,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PumpConfigurationAndControl::Attributes::ClusterRevision::TypeInfo; @@ -63677,9 +63160,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -64716,12 +64198,13 @@ - (void)setpointRaiseLowerWithParams:(MTRThermostatClusterSetpointRaiseLowerPara { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Thermostat::Commands::SetpointRaiseLower::Type request; @@ -64733,23 +64216,23 @@ new MTRCommandSuccessCallbackBridge( request.mode = static_cast>(params.mode.unsignedCharValue); request.amount = params.amount.charValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)setWeeklyScheduleWithParams:(MTRThermostatClusterSetWeeklyScheduleParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Thermostat::Commands::SetWeeklySchedule::Type request; @@ -64798,11 +64281,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)getWeeklyScheduleWithParams:(MTRThermostatClusterGetWeeklyScheduleParams *)params @@ -64811,8 +64293,10 @@ - (void)getWeeklyScheduleWithParams:(MTRThermostatClusterGetWeeklyScheduleParams { // Make a copy of params before we go async. params = [params copy]; - new MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatClusterGetWeeklyScheduleResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Thermostat::Commands::GetWeeklySchedule::Type request; @@ -64826,11 +64310,10 @@ new MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(self.callbackQue request.modeToReturn = static_cast>(params.modeToReturn.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)clearWeeklyScheduleWithCompletion:(MTRStatusCompletion)completion @@ -64842,12 +64325,13 @@ - (void)clearWeeklyScheduleWithParams:(MTRThermostatClusterClearWeeklySchedulePa { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Thermostat::Commands::ClearWeeklySchedule::Type request; @@ -64857,23 +64341,22 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeLocalTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::LocalTemperature::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLocalTemperatureWithParams:(MTRSubscribeParams * _Nonnull)params @@ -64882,27 +64365,25 @@ - (void)subscribeAttributeLocalTemperatureWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::LocalTemperature::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::LocalTemperature::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLocalTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -64910,7 +64391,8 @@ + (void)readAttributeLocalTemperatureWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::LocalTemperature::TypeInfo; @@ -64919,9 +64401,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -64931,14 +64412,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeOutdoorTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::OutdoorTemperature::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOutdoorTemperatureWithParams:(MTRSubscribeParams * _Nonnull)params @@ -64948,27 +64429,25 @@ - (void)subscribeAttributeOutdoorTemperatureWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::OutdoorTemperature::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::OutdoorTemperature::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOutdoorTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -64977,7 +64456,8 @@ + (void)readAttributeOutdoorTemperatureWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::OutdoorTemperature::TypeInfo; @@ -64986,9 +64466,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -64998,14 +64477,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeOccupancyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::Occupancy::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOccupancyWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65014,26 +64493,25 @@ - (void)subscribeAttributeOccupancyWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::Occupancy::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65041,7 +64519,8 @@ + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::Occupancy::TypeInfo; @@ -65050,9 +64529,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65063,14 +64541,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeAbsMinHeatSetpointLimitWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::AbsMinHeatSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAbsMinHeatSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65080,26 +64558,25 @@ - (void)subscribeAttributeAbsMinHeatSetpointLimitWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::AbsMinHeatSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAbsMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65108,7 +64585,8 @@ + (void)readAttributeAbsMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::AbsMinHeatSetpointLimit::TypeInfo; @@ -65117,9 +64595,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65130,14 +64607,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAbsMaxHeatSetpointLimitWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::AbsMaxHeatSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAbsMaxHeatSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65147,26 +64624,25 @@ - (void)subscribeAttributeAbsMaxHeatSetpointLimitWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::AbsMaxHeatSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAbsMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65175,7 +64651,8 @@ + (void)readAttributeAbsMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::AbsMaxHeatSetpointLimit::TypeInfo; @@ -65184,9 +64661,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65197,14 +64673,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAbsMinCoolSetpointLimitWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::AbsMinCoolSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAbsMinCoolSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65214,26 +64690,25 @@ - (void)subscribeAttributeAbsMinCoolSetpointLimitWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::AbsMinCoolSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAbsMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65242,7 +64717,8 @@ + (void)readAttributeAbsMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::AbsMinCoolSetpointLimit::TypeInfo; @@ -65251,9 +64727,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65264,14 +64739,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAbsMaxCoolSetpointLimitWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::AbsMaxCoolSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAbsMaxCoolSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65281,26 +64756,25 @@ - (void)subscribeAttributeAbsMaxCoolSetpointLimitWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::AbsMaxCoolSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAbsMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65309,7 +64783,8 @@ + (void)readAttributeAbsMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::AbsMaxCoolSetpointLimit::TypeInfo; @@ -65318,9 +64793,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65330,14 +64804,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePICoolingDemandWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::PICoolingDemand::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePICoolingDemandWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65346,26 +64820,25 @@ - (void)subscribeAttributePICoolingDemandWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::PICoolingDemand::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePICoolingDemandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65373,7 +64846,8 @@ + (void)readAttributePICoolingDemandWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::PICoolingDemand::TypeInfo; @@ -65382,9 +64856,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65394,14 +64867,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributePIHeatingDemandWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::PIHeatingDemand::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePIHeatingDemandWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65410,26 +64883,25 @@ - (void)subscribeAttributePIHeatingDemandWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::PIHeatingDemand::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePIHeatingDemandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65437,7 +64909,8 @@ + (void)readAttributePIHeatingDemandWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::PIHeatingDemand::TypeInfo; @@ -65446,9 +64919,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65459,14 +64931,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeHVACSystemTypeConfigurationWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::HVACSystemTypeConfiguration::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeHVACSystemTypeConfigurationWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -65481,12 +64953,13 @@ - (void)writeAttributeHVACSystemTypeConfigurationWithValue:(NSNumber * _Nonnull) params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -65498,13 +64971,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::HVACSystemTypeConfiguration::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeHVACSystemTypeConfigurationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65514,26 +64985,25 @@ - (void)subscribeAttributeHVACSystemTypeConfigurationWithParams:(MTRSubscribePar { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::HVACSystemTypeConfiguration::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeHVACSystemTypeConfigurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65542,7 +65012,8 @@ + (void)readAttributeHVACSystemTypeConfigurationWithAttributeCache:(MTRAttribute completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::HVACSystemTypeConfiguration::TypeInfo; @@ -65551,9 +65022,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65564,14 +65034,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeLocalTemperatureCalibrationWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::LocalTemperatureCalibration::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLocalTemperatureCalibrationWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -65586,12 +65056,13 @@ - (void)writeAttributeLocalTemperatureCalibrationWithValue:(NSNumber * _Nonnull) params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -65603,13 +65074,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::LocalTemperatureCalibration::TypeInfo; TypeInfo::Type cppValue; cppValue = value.charValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLocalTemperatureCalibrationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65619,26 +65088,25 @@ - (void)subscribeAttributeLocalTemperatureCalibrationWithParams:(MTRSubscribePar { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::LocalTemperatureCalibration::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLocalTemperatureCalibrationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65647,7 +65115,8 @@ + (void)readAttributeLocalTemperatureCalibrationWithAttributeCache:(MTRAttribute completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::LocalTemperatureCalibration::TypeInfo; @@ -65656,9 +65125,8 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65669,14 +65137,14 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeOccupiedCoolingSetpointWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::OccupiedCoolingSetpoint::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOccupiedCoolingSetpointWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -65691,12 +65159,13 @@ - (void)writeAttributeOccupiedCoolingSetpointWithValue:(NSNumber * _Nonnull)valu params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -65708,13 +65177,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::OccupiedCoolingSetpoint::TypeInfo; TypeInfo::Type cppValue; cppValue = value.shortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOccupiedCoolingSetpointWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65724,26 +65191,25 @@ - (void)subscribeAttributeOccupiedCoolingSetpointWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::OccupiedCoolingSetpoint::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65752,7 +65218,8 @@ + (void)readAttributeOccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::OccupiedCoolingSetpoint::TypeInfo; @@ -65761,9 +65228,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65774,14 +65240,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeOccupiedHeatingSetpointWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::OccupiedHeatingSetpoint::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOccupiedHeatingSetpointWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -65796,12 +65262,13 @@ - (void)writeAttributeOccupiedHeatingSetpointWithValue:(NSNumber * _Nonnull)valu params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -65813,13 +65280,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::OccupiedHeatingSetpoint::TypeInfo; TypeInfo::Type cppValue; cppValue = value.shortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOccupiedHeatingSetpointWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65829,26 +65294,25 @@ - (void)subscribeAttributeOccupiedHeatingSetpointWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::OccupiedHeatingSetpoint::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65857,7 +65321,8 @@ + (void)readAttributeOccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::OccupiedHeatingSetpoint::TypeInfo; @@ -65866,9 +65331,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65879,14 +65343,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeUnoccupiedCoolingSetpointWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::UnoccupiedCoolingSetpoint::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeUnoccupiedCoolingSetpointWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -65901,12 +65365,13 @@ - (void)writeAttributeUnoccupiedCoolingSetpointWithValue:(NSNumber * _Nonnull)va params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -65918,13 +65383,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::UnoccupiedCoolingSetpoint::TypeInfo; TypeInfo::Type cppValue; cppValue = value.shortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUnoccupiedCoolingSetpointWithParams:(MTRSubscribeParams * _Nonnull)params @@ -65934,26 +65397,25 @@ - (void)subscribeAttributeUnoccupiedCoolingSetpointWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::UnoccupiedCoolingSetpoint::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUnoccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -65962,7 +65424,8 @@ + (void)readAttributeUnoccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::UnoccupiedCoolingSetpoint::TypeInfo; @@ -65971,9 +65434,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -65984,14 +65446,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeUnoccupiedHeatingSetpointWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::UnoccupiedHeatingSetpoint::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeUnoccupiedHeatingSetpointWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -66006,12 +65468,13 @@ - (void)writeAttributeUnoccupiedHeatingSetpointWithValue:(NSNumber * _Nonnull)va params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -66023,13 +65486,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::UnoccupiedHeatingSetpoint::TypeInfo; TypeInfo::Type cppValue; cppValue = value.shortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUnoccupiedHeatingSetpointWithParams:(MTRSubscribeParams * _Nonnull)params @@ -66039,26 +65500,25 @@ - (void)subscribeAttributeUnoccupiedHeatingSetpointWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::UnoccupiedHeatingSetpoint::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUnoccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -66067,7 +65527,8 @@ + (void)readAttributeUnoccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::UnoccupiedHeatingSetpoint::TypeInfo; @@ -66076,9 +65537,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -66088,14 +65548,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMinHeatSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::MinHeatSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeMinHeatSetpointLimitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -66110,12 +65570,13 @@ - (void)writeAttributeMinHeatSetpointLimitWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -66127,13 +65588,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::MinHeatSetpointLimit::TypeInfo; TypeInfo::Type cppValue; cppValue = value.shortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinHeatSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params @@ -66143,26 +65602,25 @@ - (void)subscribeAttributeMinHeatSetpointLimitWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::MinHeatSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -66171,7 +65629,8 @@ + (void)readAttributeMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::MinHeatSetpointLimit::TypeInfo; @@ -66180,9 +65639,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -66192,14 +65650,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMaxHeatSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::MaxHeatSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeMaxHeatSetpointLimitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -66214,12 +65672,13 @@ - (void)writeAttributeMaxHeatSetpointLimitWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -66231,13 +65690,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::MaxHeatSetpointLimit::TypeInfo; TypeInfo::Type cppValue; cppValue = value.shortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxHeatSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params @@ -66247,26 +65704,25 @@ - (void)subscribeAttributeMaxHeatSetpointLimitWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::MaxHeatSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -66275,7 +65731,8 @@ + (void)readAttributeMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::MaxHeatSetpointLimit::TypeInfo; @@ -66284,9 +65741,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -66296,14 +65752,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMinCoolSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::MinCoolSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeMinCoolSetpointLimitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -66318,12 +65774,13 @@ - (void)writeAttributeMinCoolSetpointLimitWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -66335,13 +65792,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::MinCoolSetpointLimit::TypeInfo; TypeInfo::Type cppValue; cppValue = value.shortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinCoolSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params @@ -66351,26 +65806,25 @@ - (void)subscribeAttributeMinCoolSetpointLimitWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::MinCoolSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -66379,7 +65833,8 @@ + (void)readAttributeMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::MinCoolSetpointLimit::TypeInfo; @@ -66388,9 +65843,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -66400,14 +65854,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMaxCoolSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::MaxCoolSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeMaxCoolSetpointLimitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -66422,12 +65876,13 @@ - (void)writeAttributeMaxCoolSetpointLimitWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -66439,13 +65894,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::MaxCoolSetpointLimit::TypeInfo; TypeInfo::Type cppValue; cppValue = value.shortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxCoolSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params @@ -66455,26 +65908,25 @@ - (void)subscribeAttributeMaxCoolSetpointLimitWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::MaxCoolSetpointLimit::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -66483,7 +65935,8 @@ + (void)readAttributeMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::MaxCoolSetpointLimit::TypeInfo; @@ -66492,9 +65945,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -66504,14 +65956,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMinSetpointDeadBandWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::MinSetpointDeadBand::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeMinSetpointDeadBandWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -66526,12 +65978,13 @@ - (void)writeAttributeMinSetpointDeadBandWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -66543,13 +65996,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::MinSetpointDeadBand::TypeInfo; TypeInfo::Type cppValue; cppValue = value.charValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinSetpointDeadBandWithParams:(MTRSubscribeParams * _Nonnull)params @@ -66559,26 +66010,25 @@ - (void)subscribeAttributeMinSetpointDeadBandWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::MinSetpointDeadBand::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinSetpointDeadBandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -66587,7 +66037,8 @@ + (void)readAttributeMinSetpointDeadBandWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::MinSetpointDeadBand::TypeInfo; @@ -66596,9 +66047,8 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -66608,14 +66058,14 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeRemoteSensingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::RemoteSensing::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeRemoteSensingWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -66630,12 +66080,13 @@ - (void)writeAttributeRemoteSensingWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -66647,13 +66098,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::RemoteSensing::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRemoteSensingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -66662,26 +66111,25 @@ - (void)subscribeAttributeRemoteSensingWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::RemoteSensing::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRemoteSensingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -66689,7 +66137,8 @@ + (void)readAttributeRemoteSensingWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::RemoteSensing::TypeInfo; @@ -66698,9 +66147,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -66711,14 +66159,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeControlSequenceOfOperationWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatClusterThermostatControlSequenceAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ControlSequenceOfOperation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeControlSequenceOfOperationWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -66733,12 +66182,13 @@ - (void)writeAttributeControlSequenceOfOperationWithValue:(NSNumber * _Nonnull)v params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -66750,13 +66200,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::ControlSequenceOfOperation::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeControlSequenceOfOperationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -66766,28 +66214,28 @@ - (void)subscribeAttributeControlSequenceOfOperationWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::ControlSequenceOfOperation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatClusterThermostatControlSequenceAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::ControlSequenceOfOperation::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeControlSequenceOfOperationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -66796,8 +66244,9 @@ + (void)readAttributeControlSequenceOfOperationWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThermostatClusterThermostatControlSequenceAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ControlSequenceOfOperation::TypeInfo; @@ -66806,9 +66255,8 @@ new MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -66818,14 +66266,14 @@ new MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge( - (void)readAttributeSystemModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::SystemMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeSystemModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -66840,12 +66288,13 @@ - (void)writeAttributeSystemModeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -66857,13 +66306,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::SystemMode::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSystemModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -66872,26 +66319,25 @@ - (void)subscribeAttributeSystemModeWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::SystemMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSystemModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -66899,7 +66345,8 @@ + (void)readAttributeSystemModeWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::SystemMode::TypeInfo; @@ -66908,9 +66355,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -66920,14 +66366,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeThermostatRunningModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ThermostatRunningMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeThermostatRunningModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -66937,26 +66383,25 @@ - (void)subscribeAttributeThermostatRunningModeWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::ThermostatRunningMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeThermostatRunningModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -66965,7 +66410,8 @@ + (void)readAttributeThermostatRunningModeWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ThermostatRunningMode::TypeInfo; @@ -66974,9 +66420,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -66986,14 +66431,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeStartOfWeekWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::StartOfWeek::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStartOfWeekWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67002,26 +66447,25 @@ - (void)subscribeAttributeStartOfWeekWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::StartOfWeek::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStartOfWeekWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67029,7 +66473,8 @@ + (void)readAttributeStartOfWeekWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::StartOfWeek::TypeInfo; @@ -67038,9 +66483,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67051,14 +66495,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeNumberOfWeeklyTransitionsWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::NumberOfWeeklyTransitions::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfWeeklyTransitionsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67068,26 +66512,25 @@ - (void)subscribeAttributeNumberOfWeeklyTransitionsWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::NumberOfWeeklyTransitions::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfWeeklyTransitionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67096,7 +66539,8 @@ + (void)readAttributeNumberOfWeeklyTransitionsWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::NumberOfWeeklyTransitions::TypeInfo; @@ -67105,9 +66549,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67118,14 +66561,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeNumberOfDailyTransitionsWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::NumberOfDailyTransitions::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfDailyTransitionsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67135,26 +66578,25 @@ - (void)subscribeAttributeNumberOfDailyTransitionsWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::NumberOfDailyTransitions::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfDailyTransitionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67163,7 +66605,8 @@ + (void)readAttributeNumberOfDailyTransitionsWithAttributeCache:(MTRAttributeCac completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::NumberOfDailyTransitions::TypeInfo; @@ -67172,9 +66615,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67185,14 +66627,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeTemperatureSetpointHoldWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::TemperatureSetpointHold::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeTemperatureSetpointHoldWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -67207,12 +66649,13 @@ - (void)writeAttributeTemperatureSetpointHoldWithValue:(NSNumber * _Nonnull)valu params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -67224,13 +66667,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::TemperatureSetpointHold::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTemperatureSetpointHoldWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67240,26 +66681,25 @@ - (void)subscribeAttributeTemperatureSetpointHoldWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::TemperatureSetpointHold::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTemperatureSetpointHoldWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67268,7 +66708,8 @@ + (void)readAttributeTemperatureSetpointHoldWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::TemperatureSetpointHold::TypeInfo; @@ -67277,9 +66718,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67290,14 +66730,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeTemperatureSetpointHoldDurationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldDuration::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeTemperatureSetpointHoldDurationWithValue:(NSNumber * _Nullable)value @@ -67313,12 +66753,13 @@ - (void)writeAttributeTemperatureSetpointHoldDurationWithValue:(NSNumber * _Null params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -67335,13 +66776,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedShortValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTemperatureSetpointHoldDurationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67352,27 +66791,25 @@ - (void)subscribeAttributeTemperatureSetpointHoldDurationWithParams:(MTRSubscrib { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldDuration::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldDuration::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTemperatureSetpointHoldDurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67381,7 +66818,8 @@ + (void)readAttributeTemperatureSetpointHoldDurationWithAttributeCache:(MTRAttri completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldDuration::TypeInfo; @@ -67390,9 +66828,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67403,14 +66840,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeThermostatProgrammingOperationModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ThermostatProgrammingOperationMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeThermostatProgrammingOperationModeWithValue:(NSNumber * _Nonnull)value @@ -67426,12 +66863,13 @@ - (void)writeAttributeThermostatProgrammingOperationModeWithValue:(NSNumber * _N params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -67443,13 +66881,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::ThermostatProgrammingOperationMode::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeThermostatProgrammingOperationModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67460,26 +66896,25 @@ - (void)subscribeAttributeThermostatProgrammingOperationModeWithParams:(MTRSubsc { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::ThermostatProgrammingOperationMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeThermostatProgrammingOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67488,7 +66923,8 @@ + (void)readAttributeThermostatProgrammingOperationModeWithAttributeCache:(MTRAt completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ThermostatProgrammingOperationMode::TypeInfo; @@ -67497,9 +66933,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67510,14 +66945,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeThermostatRunningStateWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ThermostatRunningState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeThermostatRunningStateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67527,26 +66962,25 @@ - (void)subscribeAttributeThermostatRunningStateWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::ThermostatRunningState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeThermostatRunningStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67555,7 +66989,8 @@ + (void)readAttributeThermostatRunningStateWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ThermostatRunningState::TypeInfo; @@ -67564,9 +66999,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67576,14 +67010,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeSetpointChangeSourceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::SetpointChangeSource::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSetpointChangeSourceWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67593,26 +67027,25 @@ - (void)subscribeAttributeSetpointChangeSourceWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::SetpointChangeSource::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSetpointChangeSourceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67621,7 +67054,8 @@ + (void)readAttributeSetpointChangeSourceWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::SetpointChangeSource::TypeInfo; @@ -67630,9 +67064,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67642,14 +67075,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeSetpointChangeAmountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::SetpointChangeAmount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSetpointChangeAmountWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67659,27 +67092,25 @@ - (void)subscribeAttributeSetpointChangeAmountWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::SetpointChangeAmount::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::SetpointChangeAmount::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSetpointChangeAmountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67688,7 +67119,8 @@ + (void)readAttributeSetpointChangeAmountWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::SetpointChangeAmount::TypeInfo; @@ -67697,9 +67129,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67710,14 +67141,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeSetpointChangeSourceTimestampWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::SetpointChangeSourceTimestamp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSetpointChangeSourceTimestampWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67728,26 +67159,25 @@ - (void)subscribeAttributeSetpointChangeSourceTimestampWithParams:(MTRSubscribeP { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::SetpointChangeSourceTimestamp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSetpointChangeSourceTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67756,7 +67186,8 @@ + (void)readAttributeSetpointChangeSourceTimestampWithAttributeCache:(MTRAttribu completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::SetpointChangeSourceTimestamp::TypeInfo; @@ -67765,9 +67196,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67777,14 +67207,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeOccupiedSetbackWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::OccupiedSetback::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOccupiedSetbackWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -67799,12 +67229,13 @@ - (void)writeAttributeOccupiedSetbackWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -67821,13 +67252,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOccupiedSetbackWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67836,27 +67265,25 @@ - (void)subscribeAttributeOccupiedSetbackWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::OccupiedSetback::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::OccupiedSetback::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOccupiedSetbackWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67864,7 +67291,8 @@ + (void)readAttributeOccupiedSetbackWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::OccupiedSetback::TypeInfo; @@ -67873,9 +67301,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67885,14 +67312,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeOccupiedSetbackMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::OccupiedSetbackMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOccupiedSetbackMinWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67902,27 +67329,25 @@ - (void)subscribeAttributeOccupiedSetbackMinWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::OccupiedSetbackMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::OccupiedSetbackMin::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67931,7 +67356,8 @@ + (void)readAttributeOccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::OccupiedSetbackMin::TypeInfo; @@ -67940,9 +67366,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -67952,14 +67377,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeOccupiedSetbackMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::OccupiedSetbackMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOccupiedSetbackMaxWithParams:(MTRSubscribeParams * _Nonnull)params @@ -67969,27 +67394,25 @@ - (void)subscribeAttributeOccupiedSetbackMaxWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::OccupiedSetbackMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::OccupiedSetbackMax::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -67998,7 +67421,8 @@ + (void)readAttributeOccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::OccupiedSetbackMax::TypeInfo; @@ -68007,9 +67431,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -68019,14 +67442,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeUnoccupiedSetbackWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::UnoccupiedSetback::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeUnoccupiedSetbackWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -68041,12 +67464,13 @@ - (void)writeAttributeUnoccupiedSetbackWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -68063,13 +67487,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUnoccupiedSetbackWithParams:(MTRSubscribeParams * _Nonnull)params @@ -68078,27 +67500,25 @@ - (void)subscribeAttributeUnoccupiedSetbackWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::UnoccupiedSetback::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::UnoccupiedSetback::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUnoccupiedSetbackWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -68106,7 +67526,8 @@ + (void)readAttributeUnoccupiedSetbackWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::UnoccupiedSetback::TypeInfo; @@ -68115,9 +67536,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -68127,14 +67547,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeUnoccupiedSetbackMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUnoccupiedSetbackMinWithParams:(MTRSubscribeParams * _Nonnull)params @@ -68144,27 +67564,25 @@ - (void)subscribeAttributeUnoccupiedSetbackMinWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMin::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUnoccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -68173,7 +67591,8 @@ + (void)readAttributeUnoccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMin::TypeInfo; @@ -68182,9 +67601,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -68194,14 +67612,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeUnoccupiedSetbackMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUnoccupiedSetbackMaxWithParams:(MTRSubscribeParams * _Nonnull)params @@ -68211,27 +67629,25 @@ - (void)subscribeAttributeUnoccupiedSetbackMaxWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMax::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUnoccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -68240,7 +67656,8 @@ + (void)readAttributeUnoccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMax::TypeInfo; @@ -68249,9 +67666,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -68261,14 +67677,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeEmergencyHeatDeltaWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::EmergencyHeatDelta::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeEmergencyHeatDeltaWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -68283,12 +67699,13 @@ - (void)writeAttributeEmergencyHeatDeltaWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -68300,13 +67717,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::EmergencyHeatDelta::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEmergencyHeatDeltaWithParams:(MTRSubscribeParams * _Nonnull)params @@ -68316,26 +67731,25 @@ - (void)subscribeAttributeEmergencyHeatDeltaWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::EmergencyHeatDelta::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEmergencyHeatDeltaWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -68344,7 +67758,8 @@ + (void)readAttributeEmergencyHeatDeltaWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::EmergencyHeatDelta::TypeInfo; @@ -68353,9 +67768,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -68365,14 +67779,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeACTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ACType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeACTypeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -68387,12 +67801,13 @@ - (void)writeAttributeACTypeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -68404,13 +67819,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::ACType::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeACTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -68419,26 +67832,25 @@ - (void)subscribeAttributeACTypeWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::ACType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeACTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -68446,7 +67858,8 @@ + (void)readAttributeACTypeWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ACType::TypeInfo; @@ -68455,9 +67868,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -68467,14 +67879,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeACCapacityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ACCapacity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeACCapacityWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -68489,12 +67901,13 @@ - (void)writeAttributeACCapacityWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -68506,13 +67919,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::ACCapacity::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeACCapacityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -68521,26 +67932,25 @@ - (void)subscribeAttributeACCapacityWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::ACCapacity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeACCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -68548,7 +67958,8 @@ + (void)readAttributeACCapacityWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ACCapacity::TypeInfo; @@ -68557,9 +67968,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -68569,14 +67979,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeACRefrigerantTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ACRefrigerantType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeACRefrigerantTypeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -68591,12 +68001,13 @@ - (void)writeAttributeACRefrigerantTypeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -68608,13 +68019,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::ACRefrigerantType::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeACRefrigerantTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -68623,26 +68032,25 @@ - (void)subscribeAttributeACRefrigerantTypeWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::ACRefrigerantType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeACRefrigerantTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -68650,7 +68058,8 @@ + (void)readAttributeACRefrigerantTypeWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ACRefrigerantType::TypeInfo; @@ -68659,9 +68068,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -68671,14 +68079,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeACCompressorTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ACCompressorType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeACCompressorTypeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -68693,12 +68101,13 @@ - (void)writeAttributeACCompressorTypeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -68710,13 +68119,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::ACCompressorType::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeACCompressorTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -68725,26 +68132,25 @@ - (void)subscribeAttributeACCompressorTypeWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::ACCompressorType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeACCompressorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -68752,7 +68158,8 @@ + (void)readAttributeACCompressorTypeWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ACCompressorType::TypeInfo; @@ -68761,9 +68168,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -68773,14 +68179,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeACErrorCodeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ACErrorCode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeACErrorCodeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -68795,12 +68201,13 @@ - (void)writeAttributeACErrorCodeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -68812,13 +68219,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::ACErrorCode::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeACErrorCodeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -68827,26 +68232,25 @@ - (void)subscribeAttributeACErrorCodeWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::ACErrorCode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeACErrorCodeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -68854,7 +68258,8 @@ + (void)readAttributeACErrorCodeWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ACErrorCode::TypeInfo; @@ -68863,9 +68268,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -68875,14 +68279,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeACLouverPositionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ACLouverPosition::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeACLouverPositionWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -68897,12 +68301,13 @@ - (void)writeAttributeACLouverPositionWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -68914,13 +68319,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::ACLouverPosition::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeACLouverPositionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -68929,26 +68332,25 @@ - (void)subscribeAttributeACLouverPositionWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::ACLouverPosition::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeACLouverPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -68956,7 +68358,8 @@ + (void)readAttributeACLouverPositionWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ACLouverPosition::TypeInfo; @@ -68965,9 +68368,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -68977,14 +68379,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeACCoilTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ACCoilTemperature::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeACCoilTemperatureWithParams:(MTRSubscribeParams * _Nonnull)params @@ -68993,27 +68395,25 @@ - (void)subscribeAttributeACCoilTemperatureWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::ACCoilTemperature::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::ACCoilTemperature::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeACCoilTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -69021,7 +68421,8 @@ + (void)readAttributeACCoilTemperatureWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ACCoilTemperature::TypeInfo; @@ -69030,9 +68431,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -69042,14 +68442,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeACCapacityformatWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ACCapacityformat::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeACCapacityformatWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -69064,12 +68464,13 @@ - (void)writeAttributeACCapacityformatWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -69081,13 +68482,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = Thermostat::Attributes::ACCapacityformat::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeACCapacityformatWithParams:(MTRSubscribeParams * _Nonnull)params @@ -69096,26 +68495,25 @@ - (void)subscribeAttributeACCapacityformatWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::ACCapacityformat::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeACCapacityformatWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -69123,7 +68521,8 @@ + (void)readAttributeACCapacityformatWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ACCapacityformat::TypeInfo; @@ -69132,9 +68531,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -69144,14 +68542,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -69161,27 +68560,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -69190,8 +68589,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThermostatGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::GeneratedCommandList::TypeInfo; @@ -69200,9 +68600,8 @@ new MTRThermostatGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -69212,14 +68611,15 @@ new MTRThermostatGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -69229,27 +68629,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -69258,8 +68658,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThermostatAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::AcceptedCommandList::TypeInfo; @@ -69268,9 +68669,8 @@ new MTRThermostatAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -69280,14 +68680,14 @@ new MTRThermostatAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ThermostatAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -69296,27 +68696,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Thermostat::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ThermostatAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Thermostat::Attributes::AttributeList::TypeInfo; - chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -69324,7 +68723,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ThermostatAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::AttributeList::TypeInfo; @@ -69333,9 +68733,8 @@ new MTRThermostatAttributeListListAttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -69345,14 +68744,14 @@ new MTRThermostatAttributeListListAttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -69361,26 +68760,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -69388,7 +68786,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::FeatureMap::TypeInfo; @@ -69397,9 +68796,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -69409,14 +68807,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Thermostat::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -69425,26 +68823,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Thermostat::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -69452,7 +68849,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Thermostat::Attributes::ClusterRevision::TypeInfo; @@ -69461,9 +68859,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -71722,14 +71119,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeFanModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRFanControlClusterFanModeTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFanControlClusterFanModeTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FanControlClusterFanModeTypeAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::FanMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeFanModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -71744,12 +71141,13 @@ - (void)writeAttributeFanModeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -71761,13 +71159,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = FanControl::Attributes::FanMode::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFanModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -71776,27 +71172,26 @@ - (void)subscribeAttributeFanModeWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FanControl::Attributes::FanMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FanControlClusterFanModeTypeAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FanControl::Attributes::FanMode::TypeInfo; - chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFanModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -71804,7 +71199,8 @@ + (void)readAttributeFanModeWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRFanControlClusterFanModeTypeAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFanControlClusterFanModeTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(FanControlClusterFanModeTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::FanMode::TypeInfo; @@ -71813,9 +71209,8 @@ new MTRFanControlClusterFanModeTypeAttributeCallbackBridge(queue, completion, ^( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -71825,14 +71220,15 @@ new MTRFanControlClusterFanModeTypeAttributeCallbackBridge(queue, completion, ^( - (void)readAttributeFanModeSequenceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FanControlClusterFanModeSequenceTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::FanModeSequence::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeFanModeSequenceWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -71847,12 +71243,13 @@ - (void)writeAttributeFanModeSequenceWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -71864,13 +71261,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = FanControl::Attributes::FanModeSequence::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFanModeSequenceWithParams:(MTRSubscribeParams * _Nonnull)params @@ -71879,27 +71274,27 @@ - (void)subscribeAttributeFanModeSequenceWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FanControl::Attributes::FanModeSequence::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FanControlClusterFanModeSequenceTypeAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FanControl::Attributes::FanModeSequence::TypeInfo; - chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFanModeSequenceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -71907,8 +71302,9 @@ + (void)readAttributeFanModeSequenceWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(FanControlClusterFanModeSequenceTypeAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::FanModeSequence::TypeInfo; @@ -71917,9 +71313,8 @@ new MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -71929,14 +71324,14 @@ new MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge( - (void)readAttributePercentSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::PercentSetting::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributePercentSettingWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -71951,12 +71346,13 @@ - (void)writeAttributePercentSettingWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -71973,13 +71369,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePercentSettingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -71988,27 +71382,25 @@ - (void)subscribeAttributePercentSettingWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FanControl::Attributes::PercentSetting::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FanControl::Attributes::PercentSetting::TypeInfo; - chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePercentSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72016,7 +71408,8 @@ + (void)readAttributePercentSettingWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::PercentSetting::TypeInfo; @@ -72025,9 +71418,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72037,14 +71429,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributePercentCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::PercentCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePercentCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72053,26 +71445,25 @@ - (void)subscribeAttributePercentCurrentWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FanControl::Attributes::PercentCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePercentCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72080,7 +71471,8 @@ + (void)readAttributePercentCurrentWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::PercentCurrent::TypeInfo; @@ -72089,9 +71481,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72101,14 +71492,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeSpeedMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::SpeedMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSpeedMaxWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72117,26 +71508,25 @@ - (void)subscribeAttributeSpeedMaxWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FanControl::Attributes::SpeedMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSpeedMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72144,7 +71534,8 @@ + (void)readAttributeSpeedMaxWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::SpeedMax::TypeInfo; @@ -72153,9 +71544,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72165,14 +71555,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeSpeedSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::SpeedSetting::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeSpeedSettingWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -72187,12 +71577,13 @@ - (void)writeAttributeSpeedSettingWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -72209,13 +71600,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSpeedSettingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72224,27 +71613,25 @@ - (void)subscribeAttributeSpeedSettingWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FanControl::Attributes::SpeedSetting::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FanControl::Attributes::SpeedSetting::TypeInfo; - chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSpeedSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72252,7 +71639,8 @@ + (void)readAttributeSpeedSettingWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::SpeedSetting::TypeInfo; @@ -72261,9 +71649,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72273,14 +71660,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeSpeedCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::SpeedCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSpeedCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72289,26 +71676,25 @@ - (void)subscribeAttributeSpeedCurrentWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FanControl::Attributes::SpeedCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSpeedCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72316,7 +71702,8 @@ + (void)readAttributeSpeedCurrentWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::SpeedCurrent::TypeInfo; @@ -72325,9 +71712,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72337,14 +71723,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeRockSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::RockSupport::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRockSupportWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72353,26 +71739,25 @@ - (void)subscribeAttributeRockSupportWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FanControl::Attributes::RockSupport::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRockSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72380,7 +71765,8 @@ + (void)readAttributeRockSupportWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::RockSupport::TypeInfo; @@ -72389,9 +71775,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72401,14 +71786,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeRockSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::RockSetting::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeRockSettingWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -72423,12 +71808,13 @@ - (void)writeAttributeRockSettingWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -72440,13 +71826,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = FanControl::Attributes::RockSetting::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRockSettingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72455,26 +71839,25 @@ - (void)subscribeAttributeRockSettingWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FanControl::Attributes::RockSetting::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRockSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72482,7 +71865,8 @@ + (void)readAttributeRockSettingWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::RockSetting::TypeInfo; @@ -72491,9 +71875,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72503,14 +71886,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeWindSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::WindSupport::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWindSupportWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72519,26 +71902,25 @@ - (void)subscribeAttributeWindSupportWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FanControl::Attributes::WindSupport::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWindSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72546,7 +71928,8 @@ + (void)readAttributeWindSupportWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::WindSupport::TypeInfo; @@ -72555,9 +71938,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72567,14 +71949,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeWindSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::WindSetting::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeWindSettingWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -72589,12 +71971,13 @@ - (void)writeAttributeWindSettingWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -72606,13 +71989,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = FanControl::Attributes::WindSetting::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWindSettingWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72621,26 +72002,25 @@ - (void)subscribeAttributeWindSettingWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FanControl::Attributes::WindSetting::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWindSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72648,7 +72028,8 @@ + (void)readAttributeWindSettingWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::WindSetting::TypeInfo; @@ -72657,9 +72038,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72669,14 +72049,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFanControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFanControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FanControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72686,27 +72067,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FanControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FanControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FanControl::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72715,8 +72096,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFanControlGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFanControlGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(FanControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::GeneratedCommandList::TypeInfo; @@ -72725,9 +72107,8 @@ new MTRFanControlGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72737,14 +72118,15 @@ new MTRFanControlGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFanControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFanControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FanControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72754,27 +72136,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FanControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FanControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FanControl::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72783,8 +72165,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFanControlAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFanControlAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(FanControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::AcceptedCommandList::TypeInfo; @@ -72793,9 +72176,8 @@ new MTRFanControlAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72805,14 +72187,14 @@ new MTRFanControlAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFanControlAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFanControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FanControlAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72821,27 +72203,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FanControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FanControlAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FanControl::Attributes::AttributeList::TypeInfo; - chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72849,7 +72230,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFanControlAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFanControlAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(FanControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::AttributeList::TypeInfo; @@ -72858,9 +72240,8 @@ new MTRFanControlAttributeListListAttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72870,14 +72251,14 @@ new MTRFanControlAttributeListListAttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72886,26 +72267,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FanControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72913,7 +72293,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::FeatureMap::TypeInfo; @@ -72922,9 +72303,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -72934,14 +72314,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FanControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -72950,26 +72330,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FanControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -72977,7 +72356,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FanControl::Attributes::ClusterRevision::TypeInfo; @@ -72986,9 +72366,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -73633,14 +73012,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeTemperatureDisplayModeWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeTemperatureDisplayModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -73655,12 +73034,13 @@ - (void)writeAttributeTemperatureDisplayModeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -73672,13 +73052,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTemperatureDisplayModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -73688,26 +73066,25 @@ - (void)subscribeAttributeTemperatureDisplayModeWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTemperatureDisplayModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -73716,7 +73093,8 @@ + (void)readAttributeTemperatureDisplayModeWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::TypeInfo; @@ -73725,9 +73103,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -73737,14 +73114,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeKeypadLockoutWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeKeypadLockoutWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -73759,12 +73136,13 @@ - (void)writeAttributeKeypadLockoutWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -73776,13 +73154,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeKeypadLockoutWithParams:(MTRSubscribeParams * _Nonnull)params @@ -73791,26 +73167,25 @@ - (void)subscribeAttributeKeypadLockoutWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeKeypadLockoutWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -73818,7 +73193,8 @@ + (void)readAttributeKeypadLockoutWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::TypeInfo; @@ -73827,9 +73203,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -73840,14 +73215,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeScheduleProgrammingVisibilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeScheduleProgrammingVisibilityWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -73862,12 +73237,13 @@ - (void)writeAttributeScheduleProgrammingVisibilityWithValue:(NSNumber * _Nonnul params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -73879,13 +73255,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeScheduleProgrammingVisibilityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -73896,26 +73270,25 @@ - (void)subscribeAttributeScheduleProgrammingVisibilityWithParams:(MTRSubscribeP { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeScheduleProgrammingVisibilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -73924,7 +73297,8 @@ + (void)readAttributeScheduleProgrammingVisibilityWithAttributeCache:(MTRAttribu completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::TypeInfo; @@ -73933,9 +73307,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -73945,16 +73318,16 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, - completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::GeneratedCommandList::TypeInfo; + chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -73964,32 +73337,30 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable( - success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast( + bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge * - innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -73998,8 +73369,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::GeneratedCommandList::TypeInfo; @@ -74008,11 +73380,8 @@ new MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCall path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable( - success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -74022,16 +73391,16 @@ new MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCall - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, - completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AcceptedCommandList::TypeInfo; + chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -74041,32 +73410,30 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable( - success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast( + bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge * - innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -74075,8 +73442,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AcceptedCommandList::TypeInfo; @@ -74085,11 +73453,8 @@ new MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallb path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable( - success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -74099,15 +73464,16 @@ new MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallb - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AttributeList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatUserInterfaceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AttributeList::TypeInfo; + chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -74116,30 +73482,30 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AttributeList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatUserInterfaceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast( + bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AttributeList::TypeInfo; - chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -74147,8 +73513,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ThermostatUserInterfaceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AttributeList::TypeInfo; @@ -74157,10 +73524,8 @@ new MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBri path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -74170,14 +73535,14 @@ new MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBri - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -74186,26 +73551,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -74213,7 +73577,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::FeatureMap::TypeInfo; @@ -74222,9 +73587,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -74234,14 +73598,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -74250,26 +73614,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -74277,7 +73640,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ClusterRevision::TypeInfo; @@ -74286,9 +73650,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -74639,12 +74002,13 @@ - (void)moveToHueWithParams:(MTRColorControlClusterMoveToHueParams *)params comp { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveToHue::Type request; @@ -74660,23 +74024,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveHueWithParams:(MTRColorControlClusterMoveHueParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveHue::Type request; @@ -74690,23 +74054,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stepHueWithParams:(MTRColorControlClusterStepHueParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::StepHue::Type request; @@ -74721,23 +74085,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveToSaturationWithParams:(MTRColorControlClusterMoveToSaturationParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveToSaturation::Type request; @@ -74751,23 +74115,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveSaturationWithParams:(MTRColorControlClusterMoveSaturationParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveSaturation::Type request; @@ -74781,23 +74145,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stepSaturationWithParams:(MTRColorControlClusterStepSaturationParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::StepSaturation::Type request; @@ -74812,11 +74176,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveToHueAndSaturationWithParams:(MTRColorControlClusterMoveToHueAndSaturationParams *)params @@ -74824,12 +74187,13 @@ - (void)moveToHueAndSaturationWithParams:(MTRColorControlClusterMoveToHueAndSatu { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveToHueAndSaturation::Type request; @@ -74844,23 +74208,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveToColorWithParams:(MTRColorControlClusterMoveToColorParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveToColor::Type request; @@ -74875,23 +74239,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveColorWithParams:(MTRColorControlClusterMoveColorParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveColor::Type request; @@ -74905,23 +74269,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stepColorWithParams:(MTRColorControlClusterStepColorParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::StepColor::Type request; @@ -74936,11 +74300,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveToColorTemperatureWithParams:(MTRColorControlClusterMoveToColorTemperatureParams *)params @@ -74948,12 +74311,13 @@ - (void)moveToColorTemperatureWithParams:(MTRColorControlClusterMoveToColorTempe { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveToColorTemperature::Type request; @@ -74967,11 +74331,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)enhancedMoveToHueWithParams:(MTRColorControlClusterEnhancedMoveToHueParams *)params @@ -74979,12 +74342,13 @@ - (void)enhancedMoveToHueWithParams:(MTRColorControlClusterEnhancedMoveToHuePara { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::EnhancedMoveToHue::Type request; @@ -75000,23 +74364,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)enhancedMoveHueWithParams:(MTRColorControlClusterEnhancedMoveHueParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::EnhancedMoveHue::Type request; @@ -75030,23 +74394,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)enhancedStepHueWithParams:(MTRColorControlClusterEnhancedStepHueParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::EnhancedStepHue::Type request; @@ -75061,11 +74425,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)enhancedMoveToHueAndSaturationWithParams:(MTRColorControlClusterEnhancedMoveToHueAndSaturationParams *)params @@ -75073,12 +74436,13 @@ - (void)enhancedMoveToHueAndSaturationWithParams:(MTRColorControlClusterEnhanced { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::EnhancedMoveToHueAndSaturation::Type request; @@ -75093,23 +74457,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)colorLoopSetWithParams:(MTRColorControlClusterColorLoopSetParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::ColorLoopSet::Type request; @@ -75128,23 +74492,23 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stopMoveStepWithParams:(MTRColorControlClusterStopMoveStepParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::StopMoveStep::Type request; @@ -75156,11 +74520,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)moveColorTemperatureWithParams:(MTRColorControlClusterMoveColorTemperatureParams *)params @@ -75168,12 +74531,13 @@ - (void)moveColorTemperatureWithParams:(MTRColorControlClusterMoveColorTemperatu { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveColorTemperature::Type request; @@ -75189,11 +74553,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stepColorTemperatureWithParams:(MTRColorControlClusterStepColorTemperatureParams *)params @@ -75201,12 +74564,13 @@ - (void)stepColorTemperatureWithParams:(MTRColorControlClusterStepColorTemperatu { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::StepColorTemperature::Type request; @@ -75223,23 +74587,22 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeCurrentHueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::CurrentHue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentHueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75248,26 +74611,25 @@ - (void)subscribeAttributeCurrentHueWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::CurrentHue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -75275,7 +74637,8 @@ + (void)readAttributeCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::CurrentHue::TypeInfo; @@ -75284,9 +74647,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -75296,14 +74658,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeCurrentSaturationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::CurrentSaturation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentSaturationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75312,26 +74674,25 @@ - (void)subscribeAttributeCurrentSaturationWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::CurrentSaturation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentSaturationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -75339,7 +74700,8 @@ + (void)readAttributeCurrentSaturationWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::CurrentSaturation::TypeInfo; @@ -75348,9 +74710,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -75360,14 +74721,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeRemainingTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::RemainingTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRemainingTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75376,26 +74737,25 @@ - (void)subscribeAttributeRemainingTimeWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::RemainingTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -75403,7 +74763,8 @@ + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::RemainingTime::TypeInfo; @@ -75412,9 +74773,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -75424,14 +74784,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeCurrentXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::CurrentX::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentXWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75440,26 +74800,25 @@ - (void)subscribeAttributeCurrentXWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::CurrentX::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -75467,7 +74826,8 @@ + (void)readAttributeCurrentXWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::CurrentX::TypeInfo; @@ -75476,9 +74836,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -75488,14 +74847,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeCurrentYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::CurrentY::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentYWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75504,26 +74863,25 @@ - (void)subscribeAttributeCurrentYWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::CurrentY::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -75531,7 +74889,8 @@ + (void)readAttributeCurrentYWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::CurrentY::TypeInfo; @@ -75540,9 +74899,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -75552,14 +74910,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDriftCompensationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::DriftCompensation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDriftCompensationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75568,26 +74926,25 @@ - (void)subscribeAttributeDriftCompensationWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::DriftCompensation::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDriftCompensationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -75595,7 +74952,8 @@ + (void)readAttributeDriftCompensationWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::DriftCompensation::TypeInfo; @@ -75604,9 +74962,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -75616,14 +74973,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeCompensationTextWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::CompensationText::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCompensationTextWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75632,27 +74989,25 @@ - (void)subscribeAttributeCompensationTextWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::CompensationText::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::CompensationText::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCompensationTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -75660,7 +75015,8 @@ + (void)readAttributeCompensationTextWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::CompensationText::TypeInfo; @@ -75669,9 +75025,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -75682,14 +75037,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeColorTemperatureMiredsWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorTemperatureMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorTemperatureMiredsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75699,26 +75054,25 @@ - (void)subscribeAttributeColorTemperatureMiredsWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorTemperatureMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorTemperatureMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -75727,7 +75081,8 @@ + (void)readAttributeColorTemperatureMiredsWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorTemperatureMireds::TypeInfo; @@ -75736,9 +75091,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -75748,14 +75102,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75764,26 +75118,25 @@ - (void)subscribeAttributeColorModeWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -75791,7 +75144,8 @@ + (void)readAttributeColorModeWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorMode::TypeInfo; @@ -75800,9 +75154,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -75812,14 +75165,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeOptionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Options::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOptionsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -75834,12 +75187,13 @@ - (void)writeAttributeOptionsWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -75851,13 +75205,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ColorControl::Attributes::Options::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOptionsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75866,26 +75218,25 @@ - (void)subscribeAttributeOptionsWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Options::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -75893,7 +75244,8 @@ + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Options::TypeInfo; @@ -75902,9 +75254,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -75914,14 +75265,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeNumberOfPrimariesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::NumberOfPrimaries::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNumberOfPrimariesWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75930,27 +75281,25 @@ - (void)subscribeAttributeNumberOfPrimariesWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::NumberOfPrimaries::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::NumberOfPrimaries::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNumberOfPrimariesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -75958,7 +75307,8 @@ + (void)readAttributeNumberOfPrimariesWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::NumberOfPrimaries::TypeInfo; @@ -75967,9 +75317,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -75979,14 +75328,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributePrimary1XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary1X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary1XWithParams:(MTRSubscribeParams * _Nonnull)params @@ -75995,26 +75344,25 @@ - (void)subscribeAttributePrimary1XWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary1X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary1XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76022,7 +75370,8 @@ + (void)readAttributePrimary1XWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary1X::TypeInfo; @@ -76031,9 +75380,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76043,14 +75391,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary1YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary1Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary1YWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76059,26 +75407,25 @@ - (void)subscribeAttributePrimary1YWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary1Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary1YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76086,7 +75433,8 @@ + (void)readAttributePrimary1YWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary1Y::TypeInfo; @@ -76095,9 +75443,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76107,14 +75454,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary1IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary1Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary1IntensityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76123,27 +75470,25 @@ - (void)subscribeAttributePrimary1IntensityWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::Primary1Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::Primary1Intensity::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary1IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76151,7 +75496,8 @@ + (void)readAttributePrimary1IntensityWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary1Intensity::TypeInfo; @@ -76160,9 +75506,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76172,14 +75517,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributePrimary2XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary2X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary2XWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76188,26 +75533,25 @@ - (void)subscribeAttributePrimary2XWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary2X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary2XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76215,7 +75559,8 @@ + (void)readAttributePrimary2XWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary2X::TypeInfo; @@ -76224,9 +75569,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76236,14 +75580,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary2YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary2Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary2YWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76252,26 +75596,25 @@ - (void)subscribeAttributePrimary2YWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary2Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary2YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76279,7 +75622,8 @@ + (void)readAttributePrimary2YWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary2Y::TypeInfo; @@ -76288,9 +75632,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76300,14 +75643,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary2IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary2Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary2IntensityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76316,27 +75659,25 @@ - (void)subscribeAttributePrimary2IntensityWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::Primary2Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::Primary2Intensity::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary2IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76344,7 +75685,8 @@ + (void)readAttributePrimary2IntensityWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary2Intensity::TypeInfo; @@ -76353,9 +75695,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76365,14 +75706,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributePrimary3XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary3X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary3XWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76381,26 +75722,25 @@ - (void)subscribeAttributePrimary3XWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary3X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary3XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76408,7 +75748,8 @@ + (void)readAttributePrimary3XWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary3X::TypeInfo; @@ -76417,9 +75758,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76429,14 +75769,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary3YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary3Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary3YWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76445,26 +75785,25 @@ - (void)subscribeAttributePrimary3YWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary3Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary3YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76472,7 +75811,8 @@ + (void)readAttributePrimary3YWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary3Y::TypeInfo; @@ -76481,9 +75821,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76493,14 +75832,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary3IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary3Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary3IntensityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76509,27 +75848,25 @@ - (void)subscribeAttributePrimary3IntensityWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::Primary3Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::Primary3Intensity::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary3IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76537,7 +75874,8 @@ + (void)readAttributePrimary3IntensityWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary3Intensity::TypeInfo; @@ -76546,9 +75884,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76558,14 +75895,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributePrimary4XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary4X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary4XWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76574,26 +75911,25 @@ - (void)subscribeAttributePrimary4XWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary4X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary4XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76601,7 +75937,8 @@ + (void)readAttributePrimary4XWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary4X::TypeInfo; @@ -76610,9 +75947,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76622,14 +75958,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary4YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary4Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary4YWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76638,26 +75974,25 @@ - (void)subscribeAttributePrimary4YWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary4Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary4YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76665,7 +76000,8 @@ + (void)readAttributePrimary4YWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary4Y::TypeInfo; @@ -76674,9 +76010,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76686,14 +76021,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary4IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary4Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary4IntensityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76702,27 +76037,25 @@ - (void)subscribeAttributePrimary4IntensityWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::Primary4Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::Primary4Intensity::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary4IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76730,7 +76063,8 @@ + (void)readAttributePrimary4IntensityWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary4Intensity::TypeInfo; @@ -76739,9 +76073,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76751,14 +76084,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributePrimary5XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary5X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary5XWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76767,26 +76100,25 @@ - (void)subscribeAttributePrimary5XWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary5X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary5XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76794,7 +76126,8 @@ + (void)readAttributePrimary5XWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary5X::TypeInfo; @@ -76803,9 +76136,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76815,14 +76147,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary5YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary5Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary5YWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76831,26 +76163,25 @@ - (void)subscribeAttributePrimary5YWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary5Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary5YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76858,7 +76189,8 @@ + (void)readAttributePrimary5YWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary5Y::TypeInfo; @@ -76867,9 +76199,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76879,14 +76210,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary5IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary5Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary5IntensityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76895,27 +76226,25 @@ - (void)subscribeAttributePrimary5IntensityWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::Primary5Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::Primary5Intensity::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary5IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76923,7 +76252,8 @@ + (void)readAttributePrimary5IntensityWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary5Intensity::TypeInfo; @@ -76932,9 +76262,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -76944,14 +76273,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributePrimary6XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary6X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary6XWithParams:(MTRSubscribeParams * _Nonnull)params @@ -76960,26 +76289,25 @@ - (void)subscribeAttributePrimary6XWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary6X::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary6XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -76987,7 +76315,8 @@ + (void)readAttributePrimary6XWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary6X::TypeInfo; @@ -76996,9 +76325,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -77008,14 +76336,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary6YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary6Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary6YWithParams:(MTRSubscribeParams * _Nonnull)params @@ -77024,26 +76352,25 @@ - (void)subscribeAttributePrimary6YWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::Primary6Y::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary6YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -77051,7 +76378,8 @@ + (void)readAttributePrimary6YWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary6Y::TypeInfo; @@ -77060,9 +76388,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -77072,14 +76399,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePrimary6IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::Primary6Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePrimary6IntensityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -77088,27 +76415,25 @@ - (void)subscribeAttributePrimary6IntensityWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::Primary6Intensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::Primary6Intensity::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePrimary6IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -77116,7 +76441,8 @@ + (void)readAttributePrimary6IntensityWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::Primary6Intensity::TypeInfo; @@ -77125,9 +76451,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -77137,14 +76462,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeWhitePointXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::WhitePointX::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeWhitePointXWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -77159,12 +76484,13 @@ - (void)writeAttributeWhitePointXWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -77176,13 +76502,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ColorControl::Attributes::WhitePointX::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWhitePointXWithParams:(MTRSubscribeParams * _Nonnull)params @@ -77191,26 +76515,25 @@ - (void)subscribeAttributeWhitePointXWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::WhitePointX::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWhitePointXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -77218,7 +76541,8 @@ + (void)readAttributeWhitePointXWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::WhitePointX::TypeInfo; @@ -77227,9 +76551,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -77239,14 +76562,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeWhitePointYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::WhitePointY::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeWhitePointYWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -77261,12 +76584,13 @@ - (void)writeAttributeWhitePointYWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -77278,13 +76602,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ColorControl::Attributes::WhitePointY::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWhitePointYWithParams:(MTRSubscribeParams * _Nonnull)params @@ -77293,26 +76615,25 @@ - (void)subscribeAttributeWhitePointYWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::WhitePointY::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWhitePointYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -77320,7 +76641,8 @@ + (void)readAttributeWhitePointYWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::WhitePointY::TypeInfo; @@ -77329,9 +76651,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -77341,14 +76662,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorPointRXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorPointRX::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeColorPointRXWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -77363,12 +76684,13 @@ - (void)writeAttributeColorPointRXWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -77380,13 +76702,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ColorControl::Attributes::ColorPointRX::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorPointRXWithParams:(MTRSubscribeParams * _Nonnull)params @@ -77395,26 +76715,25 @@ - (void)subscribeAttributeColorPointRXWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorPointRX::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorPointRXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -77422,7 +76741,8 @@ + (void)readAttributeColorPointRXWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorPointRX::TypeInfo; @@ -77431,9 +76751,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -77443,14 +76762,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorPointRYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorPointRY::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeColorPointRYWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -77465,12 +76784,13 @@ - (void)writeAttributeColorPointRYWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -77482,13 +76802,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ColorControl::Attributes::ColorPointRY::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorPointRYWithParams:(MTRSubscribeParams * _Nonnull)params @@ -77497,26 +76815,25 @@ - (void)subscribeAttributeColorPointRYWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorPointRY::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorPointRYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -77524,7 +76841,8 @@ + (void)readAttributeColorPointRYWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorPointRY::TypeInfo; @@ -77533,9 +76851,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -77545,14 +76862,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorPointRIntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorPointRIntensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeColorPointRIntensityWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -77567,12 +76884,13 @@ - (void)writeAttributeColorPointRIntensityWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -77589,13 +76907,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorPointRIntensityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -77605,27 +76921,25 @@ - (void)subscribeAttributeColorPointRIntensityWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::ColorPointRIntensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::ColorPointRIntensity::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorPointRIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -77634,7 +76948,8 @@ + (void)readAttributeColorPointRIntensityWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorPointRIntensity::TypeInfo; @@ -77643,9 +76958,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -77655,14 +76969,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeColorPointGXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorPointGX::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeColorPointGXWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -77677,12 +76991,13 @@ - (void)writeAttributeColorPointGXWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -77694,13 +77009,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ColorControl::Attributes::ColorPointGX::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorPointGXWithParams:(MTRSubscribeParams * _Nonnull)params @@ -77709,26 +77022,25 @@ - (void)subscribeAttributeColorPointGXWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorPointGX::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorPointGXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -77736,7 +77048,8 @@ + (void)readAttributeColorPointGXWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorPointGX::TypeInfo; @@ -77745,9 +77058,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -77757,14 +77069,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorPointGYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorPointGY::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeColorPointGYWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -77779,12 +77091,13 @@ - (void)writeAttributeColorPointGYWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -77796,13 +77109,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ColorControl::Attributes::ColorPointGY::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorPointGYWithParams:(MTRSubscribeParams * _Nonnull)params @@ -77811,26 +77122,25 @@ - (void)subscribeAttributeColorPointGYWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorPointGY::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorPointGYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -77838,7 +77148,8 @@ + (void)readAttributeColorPointGYWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorPointGY::TypeInfo; @@ -77847,9 +77158,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -77859,14 +77169,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorPointGIntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorPointGIntensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeColorPointGIntensityWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -77881,12 +77191,13 @@ - (void)writeAttributeColorPointGIntensityWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -77903,13 +77214,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorPointGIntensityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -77919,27 +77228,25 @@ - (void)subscribeAttributeColorPointGIntensityWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::ColorPointGIntensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::ColorPointGIntensity::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorPointGIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -77948,7 +77255,8 @@ + (void)readAttributeColorPointGIntensityWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorPointGIntensity::TypeInfo; @@ -77957,9 +77265,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -77969,14 +77276,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeColorPointBXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorPointBX::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeColorPointBXWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -77991,12 +77298,13 @@ - (void)writeAttributeColorPointBXWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -78008,13 +77316,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ColorControl::Attributes::ColorPointBX::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorPointBXWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78023,26 +77329,25 @@ - (void)subscribeAttributeColorPointBXWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorPointBX::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorPointBXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78050,7 +77355,8 @@ + (void)readAttributeColorPointBXWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorPointBX::TypeInfo; @@ -78059,9 +77365,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78071,14 +77376,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorPointBYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorPointBY::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeColorPointBYWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -78093,12 +77398,13 @@ - (void)writeAttributeColorPointBYWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -78110,13 +77416,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ColorControl::Attributes::ColorPointBY::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorPointBYWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78125,26 +77429,25 @@ - (void)subscribeAttributeColorPointBYWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorPointBY::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorPointBYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78152,7 +77455,8 @@ + (void)readAttributeColorPointBYWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorPointBY::TypeInfo; @@ -78161,9 +77465,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78173,14 +77476,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorPointBIntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorPointBIntensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeColorPointBIntensityWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -78195,12 +77498,13 @@ - (void)writeAttributeColorPointBIntensityWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -78217,13 +77521,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorPointBIntensityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78233,27 +77535,25 @@ - (void)subscribeAttributeColorPointBIntensityWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::ColorPointBIntensity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::ColorPointBIntensity::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorPointBIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78262,7 +77562,8 @@ + (void)readAttributeColorPointBIntensityWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorPointBIntensity::TypeInfo; @@ -78271,9 +77572,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78283,14 +77583,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeEnhancedCurrentHueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::EnhancedCurrentHue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEnhancedCurrentHueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78300,26 +77600,25 @@ - (void)subscribeAttributeEnhancedCurrentHueWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::EnhancedCurrentHue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEnhancedCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78328,7 +77627,8 @@ + (void)readAttributeEnhancedCurrentHueWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::EnhancedCurrentHue::TypeInfo; @@ -78337,9 +77637,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78349,14 +77648,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeEnhancedColorModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::EnhancedColorMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEnhancedColorModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78365,26 +77664,25 @@ - (void)subscribeAttributeEnhancedColorModeWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::EnhancedColorMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEnhancedColorModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78392,7 +77690,8 @@ + (void)readAttributeEnhancedColorModeWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::EnhancedColorMode::TypeInfo; @@ -78401,9 +77700,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78413,14 +77711,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeColorLoopActiveWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorLoopActive::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorLoopActiveWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78429,26 +77727,25 @@ - (void)subscribeAttributeColorLoopActiveWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorLoopActive::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorLoopActiveWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78456,7 +77753,8 @@ + (void)readAttributeColorLoopActiveWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorLoopActive::TypeInfo; @@ -78465,9 +77763,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78477,14 +77774,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeColorLoopDirectionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorLoopDirection::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorLoopDirectionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78494,26 +77791,25 @@ - (void)subscribeAttributeColorLoopDirectionWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorLoopDirection::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorLoopDirectionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78522,7 +77818,8 @@ + (void)readAttributeColorLoopDirectionWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorLoopDirection::TypeInfo; @@ -78531,9 +77828,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78543,14 +77839,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeColorLoopTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorLoopTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorLoopTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78559,26 +77855,25 @@ - (void)subscribeAttributeColorLoopTimeWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorLoopTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorLoopTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78586,7 +77881,8 @@ + (void)readAttributeColorLoopTimeWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorLoopTime::TypeInfo; @@ -78595,9 +77891,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78608,14 +77903,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorLoopStartEnhancedHueWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorLoopStartEnhancedHue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorLoopStartEnhancedHueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78625,26 +77920,25 @@ - (void)subscribeAttributeColorLoopStartEnhancedHueWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorLoopStartEnhancedHue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorLoopStartEnhancedHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78653,7 +77947,8 @@ + (void)readAttributeColorLoopStartEnhancedHueWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorLoopStartEnhancedHue::TypeInfo; @@ -78662,9 +77957,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78675,14 +77969,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorLoopStoredEnhancedHueWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorLoopStoredEnhancedHue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorLoopStoredEnhancedHueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78692,26 +77986,25 @@ - (void)subscribeAttributeColorLoopStoredEnhancedHueWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorLoopStoredEnhancedHue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorLoopStoredEnhancedHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78720,7 +78013,8 @@ + (void)readAttributeColorLoopStoredEnhancedHueWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorLoopStoredEnhancedHue::TypeInfo; @@ -78729,9 +78023,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78741,14 +78034,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorCapabilitiesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorCapabilities::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorCapabilitiesWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78757,26 +78050,25 @@ - (void)subscribeAttributeColorCapabilitiesWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorCapabilities::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorCapabilitiesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78784,7 +78076,8 @@ + (void)readAttributeColorCapabilitiesWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorCapabilities::TypeInfo; @@ -78793,9 +78086,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78806,14 +78098,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorTempPhysicalMinMiredsWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMinMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorTempPhysicalMinMiredsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78823,26 +78115,25 @@ - (void)subscribeAttributeColorTempPhysicalMinMiredsWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMinMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorTempPhysicalMinMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78851,7 +78142,8 @@ + (void)readAttributeColorTempPhysicalMinMiredsWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMinMireds::TypeInfo; @@ -78860,9 +78152,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78873,14 +78164,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeColorTempPhysicalMaxMiredsWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMaxMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeColorTempPhysicalMaxMiredsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78890,26 +78181,25 @@ - (void)subscribeAttributeColorTempPhysicalMaxMiredsWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMaxMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeColorTempPhysicalMaxMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78918,7 +78208,8 @@ + (void)readAttributeColorTempPhysicalMaxMiredsWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMaxMireds::TypeInfo; @@ -78927,9 +78218,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -78940,14 +78230,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeCoupleColorTempToLevelMinMiredsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::CoupleColorTempToLevelMinMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCoupleColorTempToLevelMinMiredsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -78958,26 +78248,25 @@ - (void)subscribeAttributeCoupleColorTempToLevelMinMiredsWithParams:(MTRSubscrib { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::CoupleColorTempToLevelMinMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -78986,7 +78275,8 @@ + (void)readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache:(MTRAttri completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::CoupleColorTempToLevelMinMireds::TypeInfo; @@ -78995,9 +78285,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -79008,14 +78297,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeStartUpColorTemperatureMiredsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -79030,12 +78319,13 @@ - (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nullab params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -79052,13 +78342,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedShortValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStartUpColorTemperatureMiredsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -79069,27 +78357,25 @@ - (void)subscribeAttributeStartUpColorTemperatureMiredsWithParams:(MTRSubscribeP { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStartUpColorTemperatureMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -79098,7 +78384,8 @@ + (void)readAttributeStartUpColorTemperatureMiredsWithAttributeCache:(MTRAttribu completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo; @@ -79107,9 +78394,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -79119,14 +78405,15 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRColorControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRColorControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ColorControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -79136,27 +78423,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ColorControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -79165,8 +78452,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRColorControlGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRColorControlGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ColorControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::GeneratedCommandList::TypeInfo; @@ -79175,9 +78463,8 @@ new MTRColorControlGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -79187,14 +78474,15 @@ new MTRColorControlGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRColorControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRColorControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ColorControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -79204,27 +78492,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ColorControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -79233,8 +78521,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRColorControlAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRColorControlAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ColorControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::AcceptedCommandList::TypeInfo; @@ -79243,9 +78532,8 @@ new MTRColorControlAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -79255,14 +78543,14 @@ new MTRColorControlAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRColorControlAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRColorControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ColorControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -79271,27 +78559,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ColorControl::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ColorControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ColorControl::Attributes::AttributeList::TypeInfo; - chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -79299,7 +78586,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRColorControlAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRColorControlAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ColorControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::AttributeList::TypeInfo; @@ -79308,9 +78596,8 @@ new MTRColorControlAttributeListListAttributeCallbackBridge(queue, completion, ^ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -79320,14 +78607,14 @@ new MTRColorControlAttributeListListAttributeCallbackBridge(queue, completion, ^ - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -79336,26 +78623,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -79363,7 +78649,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::FeatureMap::TypeInfo; @@ -79372,9 +78659,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -79384,14 +78670,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ColorControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -79400,26 +78686,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -79427,7 +78712,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::ClusterRevision::TypeInfo; @@ -79436,9 +78722,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -81673,14 +80958,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributePhysicalMinLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::PhysicalMinLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePhysicalMinLevelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -81689,26 +80974,25 @@ - (void)subscribeAttributePhysicalMinLevelWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BallastConfiguration::Attributes::PhysicalMinLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePhysicalMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -81716,7 +81000,8 @@ + (void)readAttributePhysicalMinLevelWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::PhysicalMinLevel::TypeInfo; @@ -81725,9 +81010,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -81737,14 +81021,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributePhysicalMaxLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::PhysicalMaxLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePhysicalMaxLevelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -81753,26 +81037,25 @@ - (void)subscribeAttributePhysicalMaxLevelWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BallastConfiguration::Attributes::PhysicalMaxLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePhysicalMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -81780,7 +81063,8 @@ + (void)readAttributePhysicalMaxLevelWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::PhysicalMaxLevel::TypeInfo; @@ -81789,9 +81073,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -81801,14 +81084,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeBallastStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::BallastStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBallastStatusWithParams:(MTRSubscribeParams * _Nonnull)params @@ -81817,26 +81100,25 @@ - (void)subscribeAttributeBallastStatusWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BallastConfiguration::Attributes::BallastStatus::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBallastStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -81844,7 +81126,8 @@ + (void)readAttributeBallastStatusWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::BallastStatus::TypeInfo; @@ -81853,9 +81136,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -81865,14 +81147,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeMinLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::MinLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeMinLevelWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -81887,12 +81169,13 @@ - (void)writeAttributeMinLevelWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -81904,13 +81187,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BallastConfiguration::Attributes::MinLevel::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinLevelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -81919,26 +81200,25 @@ - (void)subscribeAttributeMinLevelWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BallastConfiguration::Attributes::MinLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -81946,7 +81226,8 @@ + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::MinLevel::TypeInfo; @@ -81955,9 +81236,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -81967,14 +81247,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeMaxLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::MaxLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeMaxLevelWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -81989,12 +81269,13 @@ - (void)writeAttributeMaxLevelWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -82006,13 +81287,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BallastConfiguration::Attributes::MaxLevel::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxLevelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -82021,26 +81300,25 @@ - (void)subscribeAttributeMaxLevelWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BallastConfiguration::Attributes::MaxLevel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -82048,7 +81326,8 @@ + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::MaxLevel::TypeInfo; @@ -82057,9 +81336,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -82070,14 +81348,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeIntrinsicBalanceFactorWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::IntrinsicBalanceFactor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeIntrinsicBalanceFactorWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -82092,12 +81370,13 @@ - (void)writeAttributeIntrinsicBalanceFactorWithValue:(NSNumber * _Nullable)valu params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -82114,13 +81393,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeIntrinsicBalanceFactorWithParams:(MTRSubscribeParams * _Nonnull)params @@ -82130,27 +81407,25 @@ - (void)subscribeAttributeIntrinsicBalanceFactorWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BallastConfiguration::Attributes::IntrinsicBalanceFactor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BallastConfiguration::Attributes::IntrinsicBalanceFactor::TypeInfo; - chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeIntrinsicBalanceFactorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -82159,7 +81434,8 @@ + (void)readAttributeIntrinsicBalanceFactorWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::IntrinsicBalanceFactor::TypeInfo; @@ -82168,9 +81444,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -82181,14 +81456,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeBallastFactorAdjustmentWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::BallastFactorAdjustment::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBallastFactorAdjustmentWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -82203,12 +81478,13 @@ - (void)writeAttributeBallastFactorAdjustmentWithValue:(NSNumber * _Nullable)val params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -82225,13 +81501,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBallastFactorAdjustmentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -82241,27 +81515,25 @@ - (void)subscribeAttributeBallastFactorAdjustmentWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BallastConfiguration::Attributes::BallastFactorAdjustment::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BallastConfiguration::Attributes::BallastFactorAdjustment::TypeInfo; - chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBallastFactorAdjustmentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -82270,7 +81542,8 @@ + (void)readAttributeBallastFactorAdjustmentWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::BallastFactorAdjustment::TypeInfo; @@ -82279,9 +81552,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -82291,14 +81563,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeLampQuantityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::LampQuantity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLampQuantityWithParams:(MTRSubscribeParams * _Nonnull)params @@ -82307,26 +81579,25 @@ - (void)subscribeAttributeLampQuantityWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BallastConfiguration::Attributes::LampQuantity::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLampQuantityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -82334,7 +81605,8 @@ + (void)readAttributeLampQuantityWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::LampQuantity::TypeInfo; @@ -82343,9 +81615,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -82355,14 +81626,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeLampTypeWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::LampType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLampTypeWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -82377,12 +81648,13 @@ - (void)writeAttributeLampTypeWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -82394,13 +81666,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BallastConfiguration::Attributes::LampType::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLampTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -82409,27 +81679,25 @@ - (void)subscribeAttributeLampTypeWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BallastConfiguration::Attributes::LampType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BallastConfiguration::Attributes::LampType::TypeInfo; - chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLampTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -82437,7 +81705,8 @@ + (void)readAttributeLampTypeWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::LampType::TypeInfo; @@ -82446,9 +81715,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -82458,14 +81726,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeLampManufacturerWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::LampManufacturer::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLampManufacturerWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -82480,12 +81748,13 @@ - (void)writeAttributeLampManufacturerWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -82497,13 +81766,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BallastConfiguration::Attributes::LampManufacturer::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLampManufacturerWithParams:(MTRSubscribeParams * _Nonnull)params @@ -82512,27 +81779,25 @@ - (void)subscribeAttributeLampManufacturerWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BallastConfiguration::Attributes::LampManufacturer::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BallastConfiguration::Attributes::LampManufacturer::TypeInfo; - chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLampManufacturerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -82540,7 +81805,8 @@ + (void)readAttributeLampManufacturerWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::LampManufacturer::TypeInfo; @@ -82549,9 +81815,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -82561,14 +81826,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeLampRatedHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::LampRatedHours::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLampRatedHoursWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -82583,12 +81848,13 @@ - (void)writeAttributeLampRatedHoursWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -82605,13 +81871,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLampRatedHoursWithParams:(MTRSubscribeParams * _Nonnull)params @@ -82620,27 +81884,25 @@ - (void)subscribeAttributeLampRatedHoursWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BallastConfiguration::Attributes::LampRatedHours::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BallastConfiguration::Attributes::LampRatedHours::TypeInfo; - chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLampRatedHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -82648,7 +81910,8 @@ + (void)readAttributeLampRatedHoursWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::LampRatedHours::TypeInfo; @@ -82657,9 +81920,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -82669,14 +81931,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeLampBurnHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::LampBurnHours::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLampBurnHoursWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -82691,12 +81953,13 @@ - (void)writeAttributeLampBurnHoursWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -82713,13 +81976,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLampBurnHoursWithParams:(MTRSubscribeParams * _Nonnull)params @@ -82728,27 +81989,25 @@ - (void)subscribeAttributeLampBurnHoursWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BallastConfiguration::Attributes::LampBurnHours::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BallastConfiguration::Attributes::LampBurnHours::TypeInfo; - chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLampBurnHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -82756,7 +82015,8 @@ + (void)readAttributeLampBurnHoursWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::LampBurnHours::TypeInfo; @@ -82765,9 +82025,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -82777,14 +82036,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeLampAlarmModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::LampAlarmMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLampAlarmModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -82799,12 +82058,13 @@ - (void)writeAttributeLampAlarmModeWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -82816,13 +82076,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = BallastConfiguration::Attributes::LampAlarmMode::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLampAlarmModeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -82831,26 +82089,25 @@ - (void)subscribeAttributeLampAlarmModeWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BallastConfiguration::Attributes::LampAlarmMode::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLampAlarmModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -82858,7 +82115,8 @@ + (void)readAttributeLampAlarmModeWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::LampAlarmMode::TypeInfo; @@ -82867,9 +82125,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -82880,14 +82137,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeLampBurnHoursTripPointWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::LampBurnHoursTripPoint::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLampBurnHoursTripPointWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -82902,12 +82159,13 @@ - (void)writeAttributeLampBurnHoursTripPointWithValue:(NSNumber * _Nullable)valu params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -82924,13 +82182,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLampBurnHoursTripPointWithParams:(MTRSubscribeParams * _Nonnull)params @@ -82940,27 +82196,25 @@ - (void)subscribeAttributeLampBurnHoursTripPointWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BallastConfiguration::Attributes::LampBurnHoursTripPoint::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BallastConfiguration::Attributes::LampBurnHoursTripPoint::TypeInfo; - chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLampBurnHoursTripPointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -82969,7 +82223,8 @@ + (void)readAttributeLampBurnHoursTripPointWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::LampBurnHoursTripPoint::TypeInfo; @@ -82978,9 +82233,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -82990,14 +82244,15 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BallastConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -83007,28 +82262,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BallastConfiguration::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BallastConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BallastConfiguration::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -83037,8 +82292,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BallastConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::GeneratedCommandList::TypeInfo; @@ -83047,9 +82303,8 @@ new MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -83059,14 +82314,15 @@ new MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BallastConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -83076,28 +82332,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BallastConfiguration::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BallastConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BallastConfiguration::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -83106,8 +82362,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BallastConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::AcceptedCommandList::TypeInfo; @@ -83116,9 +82373,8 @@ new MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -83128,14 +82384,15 @@ new MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBallastConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBallastConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BallastConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -83144,27 +82401,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = BallastConfiguration::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + BallastConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = BallastConfiguration::Attributes::AttributeList::TypeInfo; - chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -83172,8 +82429,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRBallastConfigurationAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBallastConfigurationAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(BallastConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::AttributeList::TypeInfo; @@ -83182,9 +82440,8 @@ new MTRBallastConfigurationAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -83194,14 +82451,14 @@ new MTRBallastConfigurationAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -83210,26 +82467,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BallastConfiguration::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -83237,7 +82493,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::FeatureMap::TypeInfo; @@ -83246,9 +82503,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -83258,14 +82514,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = BallastConfiguration::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -83274,26 +82530,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = BallastConfiguration::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -83301,7 +82556,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = BallastConfiguration::Attributes::ClusterRevision::TypeInfo; @@ -83310,9 +82566,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -84111,14 +83366,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = IlluminanceMeasurement::Attributes::MeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -84127,27 +83382,25 @@ - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = IlluminanceMeasurement::Attributes::MeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = IlluminanceMeasurement::Attributes::MeasuredValue::TypeInfo; - chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -84155,7 +83408,8 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = IlluminanceMeasurement::Attributes::MeasuredValue::TypeInfo; @@ -84164,9 +83418,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -84176,14 +83429,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = IlluminanceMeasurement::Attributes::MinMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -84192,27 +83445,25 @@ - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = IlluminanceMeasurement::Attributes::MinMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = IlluminanceMeasurement::Attributes::MinMeasuredValue::TypeInfo; - chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -84220,7 +83471,8 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = IlluminanceMeasurement::Attributes::MinMeasuredValue::TypeInfo; @@ -84229,9 +83481,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -84241,14 +83492,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = IlluminanceMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -84257,27 +83508,25 @@ - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = IlluminanceMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = IlluminanceMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -84285,7 +83534,8 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = IlluminanceMeasurement::Attributes::MaxMeasuredValue::TypeInfo; @@ -84294,9 +83544,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -84306,14 +83555,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = IlluminanceMeasurement::Attributes::Tolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)params @@ -84322,26 +83571,25 @@ - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = IlluminanceMeasurement::Attributes::Tolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -84349,7 +83597,8 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = IlluminanceMeasurement::Attributes::Tolerance::TypeInfo; @@ -84358,9 +83607,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -84370,14 +83618,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeLightSensorTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = IlluminanceMeasurement::Attributes::LightSensorType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLightSensorTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -84386,27 +83634,25 @@ - (void)subscribeAttributeLightSensorTypeWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = IlluminanceMeasurement::Attributes::LightSensorType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = IlluminanceMeasurement::Attributes::LightSensorType::TypeInfo; - chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLightSensorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -84414,7 +83660,8 @@ + (void)readAttributeLightSensorTypeWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = IlluminanceMeasurement::Attributes::LightSensorType::TypeInfo; @@ -84423,9 +83670,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -84435,14 +83681,15 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + IlluminanceMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = IlluminanceMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -84452,28 +83699,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = IlluminanceMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + IlluminanceMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = IlluminanceMeasurement::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -84482,8 +83729,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(IlluminanceMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = IlluminanceMeasurement::Attributes::GeneratedCommandList::TypeInfo; @@ -84492,9 +83740,8 @@ new MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -84504,14 +83751,15 @@ new MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + IlluminanceMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = IlluminanceMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -84521,28 +83769,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = IlluminanceMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + IlluminanceMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = IlluminanceMeasurement::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -84551,8 +83799,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(IlluminanceMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = IlluminanceMeasurement::Attributes::AcceptedCommandList::TypeInfo; @@ -84561,9 +83810,8 @@ new MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -84573,14 +83821,15 @@ new MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + IlluminanceMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = IlluminanceMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -84589,28 +83838,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = IlluminanceMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + IlluminanceMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = IlluminanceMeasurement::Attributes::AttributeList::TypeInfo; - chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -84618,8 +83867,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(IlluminanceMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = IlluminanceMeasurement::Attributes::AttributeList::TypeInfo; @@ -84628,9 +83878,8 @@ new MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -84640,14 +83889,14 @@ new MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = IlluminanceMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -84656,26 +83905,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = IlluminanceMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -84683,7 +83931,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = IlluminanceMeasurement::Attributes::FeatureMap::TypeInfo; @@ -84692,9 +83941,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -84704,14 +83952,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = IlluminanceMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -84720,26 +83968,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = IlluminanceMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -84747,7 +83994,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = IlluminanceMeasurement::Attributes::ClusterRevision::TypeInfo; @@ -84756,9 +84004,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -85141,14 +84388,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TemperatureMeasurement::Attributes::MeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -85157,27 +84404,25 @@ - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TemperatureMeasurement::Attributes::MeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TemperatureMeasurement::Attributes::MeasuredValue::TypeInfo; - chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -85185,7 +84430,8 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TemperatureMeasurement::Attributes::MeasuredValue::TypeInfo; @@ -85194,9 +84440,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -85206,14 +84451,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TemperatureMeasurement::Attributes::MinMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -85222,27 +84467,25 @@ - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TemperatureMeasurement::Attributes::MinMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TemperatureMeasurement::Attributes::MinMeasuredValue::TypeInfo; - chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -85250,7 +84493,8 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TemperatureMeasurement::Attributes::MinMeasuredValue::TypeInfo; @@ -85259,9 +84503,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -85271,14 +84514,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TemperatureMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -85287,27 +84530,25 @@ - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TemperatureMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TemperatureMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -85315,7 +84556,8 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TemperatureMeasurement::Attributes::MaxMeasuredValue::TypeInfo; @@ -85324,9 +84566,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -85336,14 +84577,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TemperatureMeasurement::Attributes::Tolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)params @@ -85352,26 +84593,25 @@ - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TemperatureMeasurement::Attributes::Tolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -85379,7 +84619,8 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TemperatureMeasurement::Attributes::Tolerance::TypeInfo; @@ -85388,9 +84629,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -85400,14 +84640,15 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TemperatureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TemperatureMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -85417,28 +84658,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TemperatureMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TemperatureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TemperatureMeasurement::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -85447,8 +84688,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TemperatureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TemperatureMeasurement::Attributes::GeneratedCommandList::TypeInfo; @@ -85457,9 +84699,8 @@ new MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -85469,14 +84710,15 @@ new MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TemperatureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TemperatureMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -85486,28 +84728,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TemperatureMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TemperatureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TemperatureMeasurement::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -85516,8 +84758,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TemperatureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TemperatureMeasurement::Attributes::AcceptedCommandList::TypeInfo; @@ -85526,9 +84769,8 @@ new MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -85538,14 +84780,15 @@ new MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TemperatureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TemperatureMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -85554,28 +84797,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TemperatureMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TemperatureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TemperatureMeasurement::Attributes::AttributeList::TypeInfo; - chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -85583,8 +84826,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TemperatureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TemperatureMeasurement::Attributes::AttributeList::TypeInfo; @@ -85593,9 +84837,8 @@ new MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -85605,14 +84848,14 @@ new MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TemperatureMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -85621,26 +84864,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TemperatureMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -85648,7 +84890,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TemperatureMeasurement::Attributes::FeatureMap::TypeInfo; @@ -85657,9 +84900,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -85669,14 +84911,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TemperatureMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -85685,26 +84927,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TemperatureMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -85712,7 +84953,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TemperatureMeasurement::Attributes::ClusterRevision::TypeInfo; @@ -85721,9 +84963,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86071,14 +85312,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::MeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86087,27 +85328,25 @@ - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PressureMeasurement::Attributes::MeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PressureMeasurement::Attributes::MeasuredValue::TypeInfo; - chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86115,7 +85354,8 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::MeasuredValue::TypeInfo; @@ -86124,9 +85364,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86136,14 +85375,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::MinMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86152,27 +85391,25 @@ - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PressureMeasurement::Attributes::MinMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PressureMeasurement::Attributes::MinMeasuredValue::TypeInfo; - chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86180,7 +85417,8 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::MinMeasuredValue::TypeInfo; @@ -86189,9 +85427,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86201,14 +85438,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86217,27 +85454,25 @@ - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PressureMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PressureMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86245,7 +85480,8 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::MaxMeasuredValue::TypeInfo; @@ -86254,9 +85490,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86266,14 +85501,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::Tolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86282,26 +85517,25 @@ - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PressureMeasurement::Attributes::Tolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86309,7 +85543,8 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::Tolerance::TypeInfo; @@ -86318,9 +85553,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86330,14 +85564,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::ScaledValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeScaledValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86346,27 +85580,25 @@ - (void)subscribeAttributeScaledValueWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PressureMeasurement::Attributes::ScaledValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PressureMeasurement::Attributes::ScaledValue::TypeInfo; - chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86374,7 +85606,8 @@ + (void)readAttributeScaledValueWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::ScaledValue::TypeInfo; @@ -86383,9 +85616,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86395,14 +85627,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMinScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::MinScaledValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinScaledValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86411,27 +85643,25 @@ - (void)subscribeAttributeMinScaledValueWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PressureMeasurement::Attributes::MinScaledValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PressureMeasurement::Attributes::MinScaledValue::TypeInfo; - chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86439,7 +85669,8 @@ + (void)readAttributeMinScaledValueWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::MinScaledValue::TypeInfo; @@ -86448,9 +85679,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86460,14 +85690,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::MaxScaledValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxScaledValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86476,27 +85706,25 @@ - (void)subscribeAttributeMaxScaledValueWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PressureMeasurement::Attributes::MaxScaledValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PressureMeasurement::Attributes::MaxScaledValue::TypeInfo; - chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86504,7 +85732,8 @@ + (void)readAttributeMaxScaledValueWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::MaxScaledValue::TypeInfo; @@ -86513,9 +85742,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86525,14 +85753,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeScaledToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::ScaledTolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeScaledToleranceWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86541,26 +85769,25 @@ - (void)subscribeAttributeScaledToleranceWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PressureMeasurement::Attributes::ScaledTolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeScaledToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86568,7 +85795,8 @@ + (void)readAttributeScaledToleranceWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::ScaledTolerance::TypeInfo; @@ -86577,9 +85805,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86589,14 +85816,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeScaleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::Scale::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeScaleWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86605,26 +85832,25 @@ - (void)subscribeAttributeScaleWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PressureMeasurement::Attributes::Scale::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeScaleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86632,7 +85858,8 @@ + (void)readAttributeScaleWithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::Scale::TypeInfo; @@ -86641,9 +85868,8 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86653,14 +85879,15 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PressureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86670,28 +85897,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PressureMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PressureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PressureMeasurement::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86700,8 +85927,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PressureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::GeneratedCommandList::TypeInfo; @@ -86710,9 +85938,8 @@ new MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86722,14 +85949,15 @@ new MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PressureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86739,28 +85967,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PressureMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PressureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PressureMeasurement::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86769,8 +85997,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PressureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::AcceptedCommandList::TypeInfo; @@ -86779,9 +86008,8 @@ new MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86791,14 +86019,15 @@ new MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPressureMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPressureMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PressureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86807,27 +86036,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = PressureMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + PressureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = PressureMeasurement::Attributes::AttributeList::TypeInfo; - chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86835,8 +86064,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRPressureMeasurementAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRPressureMeasurementAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(PressureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::AttributeList::TypeInfo; @@ -86845,9 +86075,8 @@ new MTRPressureMeasurementAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86857,14 +86086,14 @@ new MTRPressureMeasurementAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86873,26 +86102,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PressureMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86900,7 +86128,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::FeatureMap::TypeInfo; @@ -86909,9 +86138,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -86921,14 +86149,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = PressureMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -86937,26 +86165,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = PressureMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -86964,7 +86191,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = PressureMeasurement::Attributes::ClusterRevision::TypeInfo; @@ -86973,9 +86201,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -87491,14 +86718,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FlowMeasurement::Attributes::MeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -87507,27 +86734,25 @@ - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FlowMeasurement::Attributes::MeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FlowMeasurement::Attributes::MeasuredValue::TypeInfo; - chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -87535,7 +86760,8 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FlowMeasurement::Attributes::MeasuredValue::TypeInfo; @@ -87544,9 +86770,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -87556,14 +86781,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FlowMeasurement::Attributes::MinMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -87572,27 +86797,25 @@ - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FlowMeasurement::Attributes::MinMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FlowMeasurement::Attributes::MinMeasuredValue::TypeInfo; - chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -87600,7 +86823,8 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FlowMeasurement::Attributes::MinMeasuredValue::TypeInfo; @@ -87609,9 +86833,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -87621,14 +86844,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FlowMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -87637,27 +86860,25 @@ - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FlowMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FlowMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -87665,7 +86886,8 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FlowMeasurement::Attributes::MaxMeasuredValue::TypeInfo; @@ -87674,9 +86896,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -87686,14 +86907,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FlowMeasurement::Attributes::Tolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)params @@ -87702,26 +86923,25 @@ - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FlowMeasurement::Attributes::Tolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -87729,7 +86949,8 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FlowMeasurement::Attributes::Tolerance::TypeInfo; @@ -87738,9 +86959,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -87750,14 +86970,15 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FlowMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = FlowMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -87767,28 +86988,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FlowMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FlowMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FlowMeasurement::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -87797,8 +87018,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(FlowMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FlowMeasurement::Attributes::GeneratedCommandList::TypeInfo; @@ -87807,9 +87029,8 @@ new MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -87819,14 +87040,15 @@ new MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FlowMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = FlowMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -87836,27 +87058,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FlowMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FlowMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FlowMeasurement::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -87865,8 +87088,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(FlowMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FlowMeasurement::Attributes::AcceptedCommandList::TypeInfo; @@ -87875,9 +87099,8 @@ new MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -87887,14 +87110,15 @@ new MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFlowMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFlowMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FlowMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = FlowMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -87903,27 +87127,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = FlowMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + FlowMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = FlowMeasurement::Attributes::AttributeList::TypeInfo; - chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -87931,8 +87155,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRFlowMeasurementAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFlowMeasurementAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(FlowMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FlowMeasurement::Attributes::AttributeList::TypeInfo; @@ -87941,9 +87166,8 @@ new MTRFlowMeasurementAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -87953,14 +87177,14 @@ new MTRFlowMeasurementAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FlowMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -87969,26 +87193,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FlowMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -87996,7 +87219,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FlowMeasurement::Attributes::FeatureMap::TypeInfo; @@ -88005,9 +87229,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -88017,14 +87240,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = FlowMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -88033,26 +87256,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = FlowMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -88060,7 +87282,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = FlowMeasurement::Attributes::ClusterRevision::TypeInfo; @@ -88069,9 +87292,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -88419,14 +87641,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = RelativeHumidityMeasurement::Attributes::MeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -88435,27 +87657,25 @@ - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = RelativeHumidityMeasurement::Attributes::MeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = RelativeHumidityMeasurement::Attributes::MeasuredValue::TypeInfo; - chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -88463,7 +87683,8 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = RelativeHumidityMeasurement::Attributes::MeasuredValue::TypeInfo; @@ -88472,9 +87693,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -88484,14 +87704,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = RelativeHumidityMeasurement::Attributes::MinMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -88500,27 +87720,25 @@ - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = RelativeHumidityMeasurement::Attributes::MinMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = RelativeHumidityMeasurement::Attributes::MinMeasuredValue::TypeInfo; - chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -88528,7 +87746,8 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = RelativeHumidityMeasurement::Attributes::MinMeasuredValue::TypeInfo; @@ -88537,9 +87756,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -88549,14 +87767,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params @@ -88565,27 +87783,25 @@ - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::TypeInfo; - chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -88593,7 +87809,8 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::TypeInfo; @@ -88602,9 +87819,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -88614,14 +87830,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = RelativeHumidityMeasurement::Attributes::Tolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)params @@ -88630,26 +87846,25 @@ - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = RelativeHumidityMeasurement::Attributes::Tolerance::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -88657,7 +87872,8 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = RelativeHumidityMeasurement::Attributes::Tolerance::TypeInfo; @@ -88666,9 +87882,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -88678,15 +87893,16 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - using TypeInfo = RelativeHumidityMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); - }); + auto * bridge + = new MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + RelativeHumidityMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + using TypeInfo = RelativeHumidityMeasurement::Attributes::GeneratedCommandList::TypeInfo; + chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); + }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -88696,30 +87912,29 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = RelativeHumidityMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + RelativeHumidityMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = RelativeHumidityMeasurement::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge:: + OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -88728,8 +87943,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(RelativeHumidityMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = RelativeHumidityMeasurement::Attributes::GeneratedCommandList::TypeInfo; @@ -88738,10 +87954,8 @@ new MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridg path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -88751,14 +87965,15 @@ new MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridg - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + RelativeHumidityMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = RelativeHumidityMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -88768,30 +87983,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = RelativeHumidityMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + RelativeHumidityMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = RelativeHumidityMeasurement::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -88800,8 +88013,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(RelativeHumidityMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = RelativeHumidityMeasurement::Attributes::AcceptedCommandList::TypeInfo; @@ -88810,10 +88024,8 @@ new MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn - = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -88823,14 +88035,15 @@ new MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + RelativeHumidityMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = RelativeHumidityMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -88839,28 +88052,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = RelativeHumidityMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + RelativeHumidityMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = RelativeHumidityMeasurement::Attributes::AttributeList::TypeInfo; - chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -88868,8 +88081,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(RelativeHumidityMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = RelativeHumidityMeasurement::Attributes::AttributeList::TypeInfo; @@ -88878,9 +88092,8 @@ new MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -88890,14 +88103,14 @@ new MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = RelativeHumidityMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -88906,26 +88119,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = RelativeHumidityMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -88933,7 +88145,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = RelativeHumidityMeasurement::Attributes::FeatureMap::TypeInfo; @@ -88942,9 +88155,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -88954,14 +88166,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = RelativeHumidityMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -88970,26 +88182,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = RelativeHumidityMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -88997,7 +88208,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = RelativeHumidityMeasurement::Attributes::ClusterRevision::TypeInfo; @@ -89006,9 +88218,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -89356,14 +88567,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeOccupancyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::Occupancy::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOccupancyWithParams:(MTRSubscribeParams * _Nonnull)params @@ -89372,26 +88583,25 @@ - (void)subscribeAttributeOccupancyWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::Occupancy::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -89399,7 +88609,8 @@ + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::Occupancy::TypeInfo; @@ -89408,9 +88619,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -89420,14 +88630,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeOccupancySensorTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::OccupancySensorType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOccupancySensorTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -89437,26 +88647,25 @@ - (void)subscribeAttributeOccupancySensorTypeWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::OccupancySensorType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOccupancySensorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -89465,7 +88674,8 @@ + (void)readAttributeOccupancySensorTypeWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::OccupancySensorType::TypeInfo; @@ -89474,9 +88684,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -89487,14 +88696,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeOccupancySensorTypeBitmapWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::OccupancySensorTypeBitmap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOccupancySensorTypeBitmapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -89504,26 +88713,25 @@ - (void)subscribeAttributeOccupancySensorTypeBitmapWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::OccupancySensorTypeBitmap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOccupancySensorTypeBitmapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -89532,7 +88740,8 @@ + (void)readAttributeOccupancySensorTypeBitmapWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::OccupancySensorTypeBitmap::TypeInfo; @@ -89541,9 +88750,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -89554,14 +88762,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributePirOccupiedToUnoccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::PirOccupiedToUnoccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributePirOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -89576,12 +88784,13 @@ - (void)writeAttributePirOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -89593,13 +88802,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OccupancySensing::Attributes::PirOccupiedToUnoccupiedDelay::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePirOccupiedToUnoccupiedDelayWithParams:(MTRSubscribeParams * _Nonnull)params @@ -89610,26 +88817,25 @@ - (void)subscribeAttributePirOccupiedToUnoccupiedDelayWithParams:(MTRSubscribePa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::PirOccupiedToUnoccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -89638,7 +88844,8 @@ + (void)readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttribut completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::PirOccupiedToUnoccupiedDelay::TypeInfo; @@ -89647,9 +88854,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -89660,14 +88866,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePirUnoccupiedToOccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributePirUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -89682,12 +88888,13 @@ - (void)writeAttributePirUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -89699,13 +88906,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedDelay::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePirUnoccupiedToOccupiedDelayWithParams:(MTRSubscribeParams * _Nonnull)params @@ -89716,26 +88921,25 @@ - (void)subscribeAttributePirUnoccupiedToOccupiedDelayWithParams:(MTRSubscribePa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -89744,7 +88948,8 @@ + (void)readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttribut completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedDelay::TypeInfo; @@ -89753,9 +88958,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -89766,14 +88970,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePirUnoccupiedToOccupiedThresholdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedThreshold::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributePirUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value @@ -89789,12 +88993,13 @@ - (void)writeAttributePirUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Non params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -89806,13 +89011,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedThreshold::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePirUnoccupiedToOccupiedThresholdWithParams:(MTRSubscribeParams * _Nonnull)params @@ -89823,26 +89026,25 @@ - (void)subscribeAttributePirUnoccupiedToOccupiedThresholdWithParams:(MTRSubscri { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedThreshold::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -89851,7 +89053,8 @@ + (void)readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttr completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedThreshold::TypeInfo; @@ -89860,9 +89063,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -89873,14 +89075,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::UltrasonicOccupiedToUnoccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value @@ -89896,12 +89098,13 @@ - (void)writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue:(NSNumber * _ params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -89913,13 +89116,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OccupancySensing::Attributes::UltrasonicOccupiedToUnoccupiedDelay::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUltrasonicOccupiedToUnoccupiedDelayWithParams:(MTRSubscribeParams * _Nonnull)params @@ -89930,26 +89131,25 @@ - (void)subscribeAttributeUltrasonicOccupiedToUnoccupiedDelayWithParams:(MTRSubs { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::UltrasonicOccupiedToUnoccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -89958,7 +89158,8 @@ + (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache:(MTRA completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::UltrasonicOccupiedToUnoccupiedDelay::TypeInfo; @@ -89967,9 +89168,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -89980,14 +89180,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value @@ -90003,12 +89203,13 @@ - (void)writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue:(NSNumber * _ params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -90020,13 +89221,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedDelay::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedDelayWithParams:(MTRSubscribeParams * _Nonnull)params @@ -90037,26 +89236,25 @@ - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedDelayWithParams:(MTRSubs { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -90065,7 +89263,8 @@ + (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache:(MTRA completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedDelay::TypeInfo; @@ -90074,9 +89273,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -90087,14 +89285,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedThreshold::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value @@ -90112,12 +89310,13 @@ - (void)writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue:(NSNumber params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -90129,13 +89328,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedThreshold::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithParams:(MTRSubscribeParams * _Nonnull)params @@ -90146,26 +89343,25 @@ - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithParams:(MTR { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedThreshold::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -90174,7 +89370,8 @@ + (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache:( completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedThreshold::TypeInfo; @@ -90183,9 +89380,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -90196,14 +89392,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::PhysicalContactOccupiedToUnoccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value @@ -90221,12 +89417,13 @@ - (void)writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue:(NSNumbe params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -90238,13 +89435,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OccupancySensing::Attributes::PhysicalContactOccupiedToUnoccupiedDelay::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePhysicalContactOccupiedToUnoccupiedDelayWithParams:(MTRSubscribeParams * _Nonnull)params @@ -90255,26 +89450,25 @@ - (void)subscribeAttributePhysicalContactOccupiedToUnoccupiedDelayWithParams:(MT { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::PhysicalContactOccupiedToUnoccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache: @@ -90284,7 +89478,8 @@ + (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache: completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::PhysicalContactOccupiedToUnoccupiedDelay::TypeInfo; @@ -90293,9 +89488,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -90306,14 +89500,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value @@ -90331,12 +89525,13 @@ - (void)writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue:(NSNumbe params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -90348,13 +89543,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedDelay::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedDelayWithParams:(MTRSubscribeParams * _Nonnull)params @@ -90365,26 +89558,25 @@ - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedDelayWithParams:(MT { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedDelay::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache: @@ -90394,7 +89586,8 @@ + (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache: completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedDelay::TypeInfo; @@ -90403,9 +89596,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -90416,14 +89608,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedThreshold::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value @@ -90441,12 +89633,13 @@ - (void)writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue:(NSN params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -90458,13 +89651,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedThreshold::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithParams:(MTRSubscribeParams * _Nonnull)params @@ -90475,26 +89666,25 @@ - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedThreshold::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCache: @@ -90504,7 +89694,8 @@ + (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedThreshold::TypeInfo; @@ -90513,9 +89704,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -90525,14 +89715,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OccupancySensingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -90542,28 +89733,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OccupancySensing::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OccupancySensingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OccupancySensing::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -90572,8 +89763,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OccupancySensingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::GeneratedCommandList::TypeInfo; @@ -90582,9 +89774,8 @@ new MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -90594,14 +89785,15 @@ new MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OccupancySensingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -90611,28 +89803,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OccupancySensing::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OccupancySensingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OccupancySensing::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -90641,8 +89833,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OccupancySensingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::AcceptedCommandList::TypeInfo; @@ -90651,9 +89844,8 @@ new MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -90663,14 +89855,15 @@ new MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROccupancySensingAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROccupancySensingAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OccupancySensingAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -90679,27 +89872,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = OccupancySensing::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OccupancySensingAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = OccupancySensing::Attributes::AttributeList::TypeInfo; - chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -90707,8 +89900,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTROccupancySensingAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROccupancySensingAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(OccupancySensingAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::AttributeList::TypeInfo; @@ -90717,9 +89911,8 @@ new MTROccupancySensingAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -90729,14 +89922,14 @@ new MTROccupancySensingAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -90745,26 +89938,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -90772,7 +89964,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::FeatureMap::TypeInfo; @@ -90781,9 +89974,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -90793,14 +89985,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = OccupancySensing::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -90809,26 +90001,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = OccupancySensing::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -90836,7 +90027,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = OccupancySensing::Attributes::ClusterRevision::TypeInfo; @@ -90845,9 +90037,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -91588,14 +90779,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeMACAddressWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WakeOnLan::Attributes::MACAddress::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMACAddressWithParams:(MTRSubscribeParams * _Nonnull)params @@ -91604,27 +90795,25 @@ - (void)subscribeAttributeMACAddressWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WakeOnLan::Attributes::MACAddress::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WakeOnLan::Attributes::MACAddress::TypeInfo; - chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMACAddressWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -91632,7 +90821,8 @@ + (void)readAttributeMACAddressWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WakeOnLan::Attributes::MACAddress::TypeInfo; @@ -91641,9 +90831,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -91653,14 +90842,15 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WakeOnLanGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = WakeOnLan::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -91670,27 +90860,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WakeOnLan::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WakeOnLanGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WakeOnLan::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -91699,8 +90889,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(WakeOnLanGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WakeOnLan::Attributes::GeneratedCommandList::TypeInfo; @@ -91709,9 +90900,8 @@ new MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -91721,14 +90911,15 @@ new MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WakeOnLanAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = WakeOnLan::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -91738,27 +90929,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WakeOnLan::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + WakeOnLanAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WakeOnLan::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -91767,8 +90958,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(WakeOnLanAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WakeOnLan::Attributes::AcceptedCommandList::TypeInfo; @@ -91777,9 +90969,8 @@ new MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -91789,14 +90980,14 @@ new MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWakeOnLanAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWakeOnLanAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, WakeOnLanAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WakeOnLan::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -91805,27 +90996,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = WakeOnLan::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, WakeOnLanAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = WakeOnLan::Attributes::AttributeList::TypeInfo; - chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -91833,7 +91023,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRWakeOnLanAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRWakeOnLanAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(WakeOnLanAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WakeOnLan::Attributes::AttributeList::TypeInfo; @@ -91842,9 +91033,8 @@ new MTRWakeOnLanAttributeListListAttributeCallbackBridge(queue, completion, ^(Ca path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -91854,14 +91044,14 @@ new MTRWakeOnLanAttributeListListAttributeCallbackBridge(queue, completion, ^(Ca - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WakeOnLan::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -91870,26 +91060,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WakeOnLan::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -91897,7 +91086,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WakeOnLan::Attributes::FeatureMap::TypeInfo; @@ -91906,9 +91096,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -91918,14 +91107,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = WakeOnLan::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -91934,26 +91123,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = WakeOnLan::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -91961,7 +91149,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = WakeOnLan::Attributes::ClusterRevision::TypeInfo; @@ -91970,9 +91159,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -92219,8 +91407,9 @@ - (void)changeChannelWithParams:(MTRChannelClusterChangeChannelParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRChannelClusterChangeChannelResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelClusterChangeChannelResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ChannelClusterChangeChannelResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Channel::Commands::ChangeChannel::Type request; @@ -92231,11 +91420,10 @@ new MTRChannelClusterChangeChannelResponseCallbackBridge(self.callbackQueue, sel } request.match = [self asCharSpan:params.match]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)changeChannelByNumberWithParams:(MTRChannelClusterChangeChannelByNumberParams *)params @@ -92243,12 +91431,13 @@ - (void)changeChannelByNumberWithParams:(MTRChannelClusterChangeChannelByNumberP { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Channel::Commands::ChangeChannelByNumber::Type request; @@ -92260,23 +91449,23 @@ new MTRCommandSuccessCallbackBridge( request.majorNumber = params.majorNumber.unsignedShortValue; request.minorNumber = params.minorNumber.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)skipChannelWithParams:(MTRChannelClusterSkipChannelParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Channel::Commands::SkipChannel::Type request; @@ -92287,23 +91476,22 @@ new MTRCommandSuccessCallbackBridge( } request.count = params.count.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeChannelListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelChannelListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelChannelListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelChannelListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Channel::Attributes::ChannelList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeChannelListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -92312,27 +91500,25 @@ - (void)subscribeAttributeChannelListWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRChannelChannelListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRChannelChannelListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Channel::Attributes::ChannelList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRChannelChannelListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelChannelListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Channel::Attributes::ChannelList::TypeInfo; - chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRChannelChannelListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRChannelChannelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRChannelChannelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeChannelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -92340,7 +91526,8 @@ + (void)readAttributeChannelListWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelChannelListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelChannelListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ChannelChannelListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Channel::Attributes::ChannelList::TypeInfo; @@ -92349,9 +91536,8 @@ new MTRChannelChannelListListAttributeCallbackBridge(queue, completion, ^(Cancel path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -92362,14 +91548,14 @@ new MTRChannelChannelListListAttributeCallbackBridge(queue, completion, ^(Cancel - (void)readAttributeLineupWithCompletion:(void (^)( MTRChannelClusterLineupInfo * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelLineupStructAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelLineupStructAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelLineupStructAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Channel::Attributes::Lineup::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLineupWithParams:(MTRSubscribeParams * _Nonnull)params @@ -92379,27 +91565,25 @@ - (void)subscribeAttributeLineupWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRChannelLineupStructAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRChannelLineupStructAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Channel::Attributes::Lineup::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRChannelLineupStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelLineupStructAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Channel::Attributes::Lineup::TypeInfo; - chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRChannelLineupStructAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRChannelLineupStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRChannelLineupStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLineupWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -92408,7 +91592,8 @@ + (void)readAttributeLineupWithAttributeCache:(MTRAttributeCacheContainer *)attr completion:(void (^)(MTRChannelClusterLineupInfo * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelLineupStructAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelLineupStructAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ChannelLineupStructAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Channel::Attributes::Lineup::TypeInfo; @@ -92417,9 +91602,8 @@ new MTRChannelLineupStructAttributeCallbackBridge(queue, completion, ^(Cancelabl path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -92430,14 +91614,14 @@ new MTRChannelLineupStructAttributeCallbackBridge(queue, completion, ^(Cancelabl - (void)readAttributeCurrentChannelWithCompletion:(void (^)(MTRChannelClusterChannelInfo * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelCurrentChannelStructAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelCurrentChannelStructAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelCurrentChannelStructAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Channel::Attributes::CurrentChannel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentChannelWithParams:(MTRSubscribeParams * _Nonnull)params @@ -92447,27 +91631,26 @@ - (void)subscribeAttributeCurrentChannelWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Channel::Attributes::CurrentChannel::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelCurrentChannelStructAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Channel::Attributes::CurrentChannel::TypeInfo; - chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentChannelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -92476,7 +91659,8 @@ + (void)readAttributeCurrentChannelWithAttributeCache:(MTRAttributeCacheContaine completion:(void (^)(MTRChannelClusterChannelInfo * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelCurrentChannelStructAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelCurrentChannelStructAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ChannelCurrentChannelStructAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Channel::Attributes::CurrentChannel::TypeInfo; @@ -92485,9 +91669,8 @@ new MTRChannelCurrentChannelStructAttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -92497,14 +91680,15 @@ new MTRChannelCurrentChannelStructAttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ChannelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = Channel::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -92514,27 +91698,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Channel::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ChannelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Channel::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -92543,35 +91727,36 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelGeneratedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = Channel::Attributes::GeneratedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRChannelGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ChannelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = Channel::Attributes::GeneratedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ChannelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Channel::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -92581,27 +91766,26 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Channel::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ChannelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Channel::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -92610,35 +91794,36 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = Channel::Attributes::AcceptedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRChannelAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ChannelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = Channel::Attributes::AcceptedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Channel::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -92647,27 +91832,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRChannelAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRChannelAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = Channel::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRChannelAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Channel::Attributes::AttributeList::TypeInfo; - chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRChannelAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRChannelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRChannelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -92675,7 +91859,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRChannelAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(ChannelAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Channel::Attributes::AttributeList::TypeInfo; @@ -92684,9 +91869,8 @@ new MTRChannelAttributeListListAttributeCallbackBridge(queue, completion, ^(Canc path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -92696,14 +91880,14 @@ new MTRChannelAttributeListListAttributeCallbackBridge(queue, completion, ^(Canc - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Channel::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -92712,26 +91896,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Channel::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -92739,7 +91922,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Channel::Attributes::FeatureMap::TypeInfo; @@ -92748,9 +91932,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -92760,14 +91943,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = Channel::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -92776,26 +91959,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = Channel::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -92803,7 +91985,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = Channel::Attributes::ClusterRevision::TypeInfo; @@ -92812,9 +91995,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -93144,8 +92326,10 @@ - (void)navigateTargetWithParams:(MTRTargetNavigatorClusterNavigateTargetParams { // Make a copy of params before we go async. params = [params copy]; - new MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TargetNavigatorClusterNavigateTargetResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TargetNavigator::Commands::NavigateTarget::Type request; @@ -93160,23 +92344,22 @@ new MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(self.callbackQ definedValue_0 = [self asCharSpan:params.data]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeTargetListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTargetNavigatorTargetListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTargetNavigatorTargetListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TargetNavigatorTargetListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TargetNavigator::Attributes::TargetList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTargetListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -93185,27 +92368,26 @@ - (void)subscribeAttributeTargetListWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TargetNavigator::Attributes::TargetList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TargetNavigatorTargetListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TargetNavigator::Attributes::TargetList::TypeInfo; - chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTargetListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -93213,7 +92395,8 @@ + (void)readAttributeTargetListWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTargetNavigatorTargetListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTargetNavigatorTargetListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TargetNavigatorTargetListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TargetNavigator::Attributes::TargetList::TypeInfo; @@ -93222,9 +92405,8 @@ new MTRTargetNavigatorTargetListListAttributeCallbackBridge(queue, completion, ^ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -93234,14 +92416,14 @@ new MTRTargetNavigatorTargetListListAttributeCallbackBridge(queue, completion, ^ - (void)readAttributeCurrentTargetWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TargetNavigator::Attributes::CurrentTarget::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentTargetWithParams:(MTRSubscribeParams * _Nonnull)params @@ -93250,26 +92432,25 @@ - (void)subscribeAttributeCurrentTargetWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TargetNavigator::Attributes::CurrentTarget::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentTargetWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -93277,7 +92458,8 @@ + (void)readAttributeCurrentTargetWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TargetNavigator::Attributes::CurrentTarget::TypeInfo; @@ -93286,9 +92468,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -93298,14 +92479,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TargetNavigatorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TargetNavigator::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -93315,28 +92497,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TargetNavigator::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TargetNavigatorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TargetNavigator::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -93345,8 +92527,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TargetNavigatorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TargetNavigator::Attributes::GeneratedCommandList::TypeInfo; @@ -93355,9 +92538,8 @@ new MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -93367,14 +92549,15 @@ new MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TargetNavigatorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TargetNavigator::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -93384,27 +92567,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TargetNavigator::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TargetNavigatorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TargetNavigator::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -93413,8 +92597,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TargetNavigatorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TargetNavigator::Attributes::AcceptedCommandList::TypeInfo; @@ -93423,9 +92608,8 @@ new MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -93435,14 +92619,15 @@ new MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTargetNavigatorAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTargetNavigatorAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TargetNavigatorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TargetNavigator::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -93451,27 +92636,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TargetNavigator::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TargetNavigatorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TargetNavigator::Attributes::AttributeList::TypeInfo; - chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -93479,8 +92664,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTargetNavigatorAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTargetNavigatorAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TargetNavigatorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TargetNavigator::Attributes::AttributeList::TypeInfo; @@ -93489,9 +92675,8 @@ new MTRTargetNavigatorAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -93501,14 +92686,14 @@ new MTRTargetNavigatorAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TargetNavigator::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -93517,26 +92702,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TargetNavigator::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -93544,7 +92728,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TargetNavigator::Attributes::FeatureMap::TypeInfo; @@ -93553,9 +92738,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -93565,14 +92749,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TargetNavigator::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -93581,26 +92765,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TargetNavigator::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -93608,7 +92791,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TargetNavigator::Attributes::ClusterRevision::TypeInfo; @@ -93617,9 +92801,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -93913,8 +93096,10 @@ - (void)playWithParams:(MTRMediaPlaybackClusterPlayParams * _Nullable)params { // Make a copy of params before we go async. params = [params copy]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Play::Type request; @@ -93924,11 +93109,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, se } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)pauseWithCompletion:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, @@ -93942,8 +93126,10 @@ - (void)pauseWithParams:(MTRMediaPlaybackClusterPauseParams * _Nullable)params { // Make a copy of params before we go async. params = [params copy]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Pause::Type request; @@ -93953,11 +93139,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, se } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stopPlaybackWithCompletion:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, @@ -93971,8 +93156,10 @@ - (void)stopPlaybackWithParams:(MTRMediaPlaybackClusterStopPlaybackParams * _Nul { // Make a copy of params before we go async. params = [params copy]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::StopPlayback::Type request; @@ -93982,11 +93169,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, se } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)startOverWithCompletion:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, @@ -94000,8 +93186,10 @@ - (void)startOverWithParams:(MTRMediaPlaybackClusterStartOverParams * _Nullable) { // Make a copy of params before we go async. params = [params copy]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::StartOver::Type request; @@ -94011,11 +93199,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, se } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)previousWithCompletion:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, @@ -94029,8 +93216,10 @@ - (void)previousWithParams:(MTRMediaPlaybackClusterPreviousParams * _Nullable)pa { // Make a copy of params before we go async. params = [params copy]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Previous::Type request; @@ -94040,11 +93229,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, se } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)nextWithCompletion:(void (^)( @@ -94058,8 +93246,10 @@ - (void)nextWithParams:(MTRMediaPlaybackClusterNextParams * _Nullable)params { // Make a copy of params before we go async. params = [params copy]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Next::Type request; @@ -94069,11 +93259,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, se } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)rewindWithCompletion:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, @@ -94087,8 +93276,10 @@ - (void)rewindWithParams:(MTRMediaPlaybackClusterRewindParams * _Nullable)params { // Make a copy of params before we go async. params = [params copy]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Rewind::Type request; @@ -94098,11 +93289,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, se } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)fastForwardWithCompletion:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, @@ -94116,8 +93306,10 @@ - (void)fastForwardWithParams:(MTRMediaPlaybackClusterFastForwardParams * _Nulla { // Make a copy of params before we go async. params = [params copy]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::FastForward::Type request; @@ -94127,11 +93319,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, se } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)skipForwardWithParams:(MTRMediaPlaybackClusterSkipForwardParams *)params @@ -94140,8 +93331,10 @@ - (void)skipForwardWithParams:(MTRMediaPlaybackClusterSkipForwardParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::SkipForward::Type request; @@ -94152,11 +93345,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, se } request.deltaPositionMilliseconds = params.deltaPositionMilliseconds.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)skipBackwardWithParams:(MTRMediaPlaybackClusterSkipBackwardParams *)params @@ -94165,8 +93357,10 @@ - (void)skipBackwardWithParams:(MTRMediaPlaybackClusterSkipBackwardParams *)para { // Make a copy of params before we go async. params = [params copy]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::SkipBackward::Type request; @@ -94177,11 +93371,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, se } request.deltaPositionMilliseconds = params.deltaPositionMilliseconds.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)seekWithParams:(MTRMediaPlaybackClusterSeekParams *)params @@ -94190,8 +93383,10 @@ - (void)seekWithParams:(MTRMediaPlaybackClusterSeekParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Seek::Type request; @@ -94202,23 +93397,23 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, se } request.position = params.position.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeCurrentStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackStateEnumAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::CurrentState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentStateWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94227,27 +93422,27 @@ - (void)subscribeAttributeCurrentStateWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaPlayback::Attributes::CurrentState::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackStateEnumAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaPlayback::Attributes::CurrentState::TypeInfo; - chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94255,8 +93450,9 @@ + (void)readAttributeCurrentStateWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(MediaPlaybackClusterPlaybackStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaPlayback::Attributes::CurrentState::TypeInfo; @@ -94265,9 +93461,8 @@ new MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -94277,14 +93472,14 @@ new MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge( - (void)readAttributeStartTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::StartTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStartTimeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94293,27 +93488,25 @@ - (void)subscribeAttributeStartTimeWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaPlayback::Attributes::StartTime::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaPlayback::Attributes::StartTime::TypeInfo; - chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStartTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94321,7 +93514,8 @@ + (void)readAttributeStartTimeWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaPlayback::Attributes::StartTime::TypeInfo; @@ -94330,9 +93524,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -94342,14 +93535,14 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeDurationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::Duration::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDurationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94358,27 +93551,25 @@ - (void)subscribeAttributeDurationWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaPlayback::Attributes::Duration::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaPlayback::Attributes::Duration::TypeInfo; - chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94386,7 +93577,8 @@ + (void)readAttributeDurationWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaPlayback::Attributes::Duration::TypeInfo; @@ -94395,9 +93587,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -94408,14 +93599,15 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeSampledPositionWithCompletion:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackSampledPositionStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::SampledPosition::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSampledPositionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94425,27 +93617,27 @@ - (void)subscribeAttributeSampledPositionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaPlayback::Attributes::SampledPosition::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackSampledPositionStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaPlayback::Attributes::SampledPosition::TypeInfo; - chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSampledPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94454,8 +93646,9 @@ + (void)readAttributeSampledPositionWithAttributeCache:(MTRAttributeCacheContain completion:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(MediaPlaybackSampledPositionStructAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaPlayback::Attributes::SampledPosition::TypeInfo; @@ -94464,9 +93657,8 @@ new MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -94476,14 +93668,14 @@ new MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge( - (void)readAttributePlaybackSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRFloatAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFloatAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FloatAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::PlaybackSpeed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePlaybackSpeedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94492,26 +93684,25 @@ - (void)subscribeAttributePlaybackSpeedWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRFloatAttributeCallbackSubscriptionBridge * callbackBridge = new MTRFloatAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFloatAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FloatAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = MediaPlayback::Attributes::PlaybackSpeed::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFloatAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePlaybackSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94519,7 +93710,8 @@ + (void)readAttributePlaybackSpeedWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRFloatAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFloatAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(FloatAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaPlayback::Attributes::PlaybackSpeed::TypeInfo; @@ -94528,9 +93720,8 @@ new MTRFloatAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -94540,14 +93731,14 @@ new MTRFloatAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeSeekRangeEndWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::SeekRangeEnd::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSeekRangeEndWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94556,27 +93747,25 @@ - (void)subscribeAttributeSeekRangeEndWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaPlayback::Attributes::SeekRangeEnd::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaPlayback::Attributes::SeekRangeEnd::TypeInfo; - chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSeekRangeEndWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94584,7 +93773,8 @@ + (void)readAttributeSeekRangeEndWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaPlayback::Attributes::SeekRangeEnd::TypeInfo; @@ -94593,9 +93783,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -94605,14 +93794,14 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeSeekRangeStartWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::SeekRangeStart::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSeekRangeStartWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94621,27 +93810,25 @@ - (void)subscribeAttributeSeekRangeStartWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaPlayback::Attributes::SeekRangeStart::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaPlayback::Attributes::SeekRangeStart::TypeInfo; - chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSeekRangeStartWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94649,7 +93836,8 @@ + (void)readAttributeSeekRangeStartWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaPlayback::Attributes::SeekRangeStart::TypeInfo; @@ -94658,9 +93846,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -94670,14 +93857,15 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94687,27 +93875,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaPlayback::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaPlayback::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94716,8 +93904,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(MediaPlaybackGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaPlayback::Attributes::GeneratedCommandList::TypeInfo; @@ -94726,9 +93915,8 @@ new MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -94738,14 +93926,15 @@ new MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94755,27 +93944,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaPlayback::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaPlayback::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94784,8 +93973,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(MediaPlaybackAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaPlayback::Attributes::AcceptedCommandList::TypeInfo; @@ -94794,9 +93984,8 @@ new MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -94806,14 +93995,14 @@ new MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaPlaybackAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94822,27 +94011,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaPlayback::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaPlayback::Attributes::AttributeList::TypeInfo; - chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94850,35 +94038,36 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaPlaybackAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = MediaPlayback::Attributes::AttributeList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRMediaPlaybackAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(MediaPlaybackAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = MediaPlayback::Attributes::AttributeList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94887,26 +94076,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = MediaPlayback::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94914,7 +94102,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaPlayback::Attributes::FeatureMap::TypeInfo; @@ -94923,9 +94112,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -94935,14 +94123,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaPlayback::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -94951,26 +94139,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = MediaPlayback::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -94978,7 +94165,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaPlayback::Attributes::ClusterRevision::TypeInfo; @@ -94987,9 +94175,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -95547,12 +94734,13 @@ - (void)selectInputWithParams:(MTRMediaInputClusterSelectInputParams *)params co { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaInput::Commands::SelectInput::Type request; @@ -95563,11 +94751,10 @@ new MTRCommandSuccessCallbackBridge( } request.index = params.index.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)showInputStatusWithCompletion:(MTRStatusCompletion)completion @@ -95579,12 +94766,13 @@ - (void)showInputStatusWithParams:(MTRMediaInputClusterShowInputStatusParams * _ { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaInput::Commands::ShowInputStatus::Type request; @@ -95594,11 +94782,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)hideInputStatusWithCompletion:(MTRStatusCompletion)completion @@ -95610,12 +94797,13 @@ - (void)hideInputStatusWithParams:(MTRMediaInputClusterHideInputStatusParams * _ { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaInput::Commands::HideInputStatus::Type request; @@ -95625,23 +94813,23 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)renameInputWithParams:(MTRMediaInputClusterRenameInputParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaInput::Commands::RenameInput::Type request; @@ -95653,23 +94841,22 @@ new MTRCommandSuccessCallbackBridge( request.index = params.index.unsignedCharValue; request.name = [self asCharSpan:params.name]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeInputListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaInputInputListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaInputInputListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, MediaInputInputListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaInput::Attributes::InputList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInputListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -95678,27 +94865,26 @@ - (void)subscribeAttributeInputListWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRMediaInputInputListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRMediaInputInputListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaInput::Attributes::InputList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRMediaInputInputListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, MediaInputInputListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaInput::Attributes::InputList::TypeInfo; - chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRMediaInputInputListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRMediaInputInputListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRMediaInputInputListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInputListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -95706,7 +94892,8 @@ + (void)readAttributeInputListWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaInputInputListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaInputInputListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(MediaInputInputListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaInput::Attributes::InputList::TypeInfo; @@ -95715,9 +94902,8 @@ new MTRMediaInputInputListListAttributeCallbackBridge(queue, completion, ^(Cance path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -95727,14 +94913,14 @@ new MTRMediaInputInputListListAttributeCallbackBridge(queue, completion, ^(Cance - (void)readAttributeCurrentInputWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaInput::Attributes::CurrentInput::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentInputWithParams:(MTRSubscribeParams * _Nonnull)params @@ -95743,26 +94929,25 @@ - (void)subscribeAttributeCurrentInputWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = MediaInput::Attributes::CurrentInput::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentInputWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -95770,7 +94955,8 @@ + (void)readAttributeCurrentInputWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaInput::Attributes::CurrentInput::TypeInfo; @@ -95779,9 +94965,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -95791,14 +94976,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaInput::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -95808,27 +94994,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaInput::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaInput::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -95837,8 +95023,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaInputGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(MediaInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaInput::Attributes::GeneratedCommandList::TypeInfo; @@ -95847,9 +95034,8 @@ new MTRMediaInputGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -95859,14 +95045,15 @@ new MTRMediaInputGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaInput::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -95876,27 +95063,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaInput::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaInput::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -95905,8 +95092,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaInputAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(MediaInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaInput::Attributes::AcceptedCommandList::TypeInfo; @@ -95915,9 +95103,8 @@ new MTRMediaInputAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -95927,14 +95114,14 @@ new MTRMediaInputAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaInputAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaInputAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, MediaInputAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaInput::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -95943,27 +95130,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = MediaInput::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, MediaInputAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = MediaInput::Attributes::AttributeList::TypeInfo; - chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -95971,7 +95157,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRMediaInputAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaInputAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(MediaInputAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaInput::Attributes::AttributeList::TypeInfo; @@ -95980,9 +95167,8 @@ new MTRMediaInputAttributeListListAttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -95992,14 +95178,14 @@ new MTRMediaInputAttributeListListAttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaInput::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -96008,26 +95194,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = MediaInput::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -96035,7 +95220,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaInput::Attributes::FeatureMap::TypeInfo; @@ -96044,9 +95230,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -96056,14 +95241,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = MediaInput::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -96072,26 +95257,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = MediaInput::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -96099,7 +95283,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = MediaInput::Attributes::ClusterRevision::TypeInfo; @@ -96108,9 +95293,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -96422,12 +95606,13 @@ - (void)sleepWithParams:(MTRLowPowerClusterSleepParams * _Nullable)params comple { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LowPower::Commands::Sleep::Type request; @@ -96437,23 +95622,23 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LowPowerGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = LowPower::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -96463,27 +95648,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LowPower::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LowPowerGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LowPower::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -96492,8 +95677,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLowPowerGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(LowPowerGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LowPower::Attributes::GeneratedCommandList::TypeInfo; @@ -96502,9 +95688,8 @@ new MTRLowPowerGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -96514,14 +95699,15 @@ new MTRLowPowerGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LowPowerAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = LowPower::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -96531,27 +95717,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LowPower::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + LowPowerAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LowPower::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -96560,35 +95746,36 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = LowPower::Attributes::AcceptedCommandList::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(LowPowerAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = LowPower::Attributes::AcceptedCommandList::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLowPowerAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLowPowerAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, LowPowerAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LowPower::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -96597,27 +95784,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = LowPower::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, LowPowerAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = LowPower::Attributes::AttributeList::TypeInfo; - chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -96625,7 +95811,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRLowPowerAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRLowPowerAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(LowPowerAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LowPower::Attributes::AttributeList::TypeInfo; @@ -96634,9 +95821,8 @@ new MTRLowPowerAttributeListListAttributeCallbackBridge(queue, completion, ^(Can path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -96646,14 +95832,14 @@ new MTRLowPowerAttributeListListAttributeCallbackBridge(queue, completion, ^(Can - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LowPower::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -96662,26 +95848,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LowPower::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -96689,7 +95874,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LowPower::Attributes::FeatureMap::TypeInfo; @@ -96698,9 +95884,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -96710,14 +95895,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = LowPower::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -96726,26 +95911,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = LowPower::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -96753,7 +95937,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = LowPower::Attributes::ClusterRevision::TypeInfo; @@ -96762,9 +95947,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -96987,8 +96171,9 @@ - (void)sendKeyWithParams:(MTRKeypadInputClusterSendKeyParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRKeypadInputClusterSendKeyResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRKeypadInputClusterSendKeyResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, KeypadInputClusterSendKeyResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; KeypadInput::Commands::SendKey::Type request; @@ -96999,23 +96184,23 @@ new MTRKeypadInputClusterSendKeyResponseCallbackBridge(self.callbackQueue, self. } request.keyCode = static_cast>(params.keyCode.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + KeypadInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = KeypadInput::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -97025,27 +96210,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = KeypadInput::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + KeypadInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = KeypadInput::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -97054,8 +96239,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(KeypadInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = KeypadInput::Attributes::GeneratedCommandList::TypeInfo; @@ -97064,9 +96250,8 @@ new MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -97076,14 +96261,15 @@ new MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + KeypadInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = KeypadInput::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -97093,27 +96279,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = KeypadInput::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + KeypadInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = KeypadInput::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -97122,8 +96308,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(KeypadInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = KeypadInput::Attributes::AcceptedCommandList::TypeInfo; @@ -97132,9 +96319,8 @@ new MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -97144,14 +96330,14 @@ new MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRKeypadInputAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRKeypadInputAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, KeypadInputAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = KeypadInput::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -97160,27 +96346,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = KeypadInput::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, KeypadInputAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = KeypadInput::Attributes::AttributeList::TypeInfo; - chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -97188,7 +96373,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRKeypadInputAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRKeypadInputAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(KeypadInputAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = KeypadInput::Attributes::AttributeList::TypeInfo; @@ -97197,9 +96383,8 @@ new MTRKeypadInputAttributeListListAttributeCallbackBridge(queue, completion, ^( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -97209,14 +96394,14 @@ new MTRKeypadInputAttributeListListAttributeCallbackBridge(queue, completion, ^( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = KeypadInput::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -97225,26 +96410,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = KeypadInput::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -97252,7 +96436,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = KeypadInput::Attributes::FeatureMap::TypeInfo; @@ -97261,9 +96446,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -97273,14 +96457,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = KeypadInput::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -97289,26 +96473,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = KeypadInput::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -97316,7 +96499,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = KeypadInput::Attributes::ClusterRevision::TypeInfo; @@ -97325,9 +96509,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -97548,8 +96731,10 @@ - (void)launchContentWithParams:(MTRContentLauncherClusterLaunchContentParams *) { // Make a copy of params before we go async. params = [params copy]; - new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherClusterLaunchResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ContentLauncher::Commands::LaunchContent::Type request; @@ -97616,11 +96801,10 @@ new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, se definedValue_0 = [self asCharSpan:params.data]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)launchURLWithParams:(MTRContentLauncherClusterLaunchURLParams *)params @@ -97629,8 +96813,10 @@ - (void)launchURLWithParams:(MTRContentLauncherClusterLaunchURLParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherClusterLaunchResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ContentLauncher::Commands::LaunchURL::Type request; @@ -97739,23 +96925,23 @@ new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, se } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeAcceptHeaderWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherAcceptHeaderListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ContentLauncher::Attributes::AcceptHeader::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptHeaderWithParams:(MTRSubscribeParams * _Nonnull)params @@ -97764,27 +96950,27 @@ - (void)subscribeAttributeAcceptHeaderWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ContentLauncher::Attributes::AcceptHeader::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherAcceptHeaderListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ContentLauncher::Attributes::AcceptHeader::TypeInfo; - chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptHeaderWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -97792,36 +96978,37 @@ + (void)readAttributeAcceptHeaderWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = ContentLauncher::Attributes::AcceptHeader::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ContentLauncherAcceptHeaderListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = ContentLauncher::Attributes::AcceptHeader::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeSupportedStreamingProtocolsWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ContentLauncher::Attributes::SupportedStreamingProtocols::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeSupportedStreamingProtocolsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -97836,12 +97023,13 @@ - (void)writeAttributeSupportedStreamingProtocolsWithValue:(NSNumber * _Nonnull) params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -97853,13 +97041,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ContentLauncher::Attributes::SupportedStreamingProtocols::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeSupportedStreamingProtocolsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -97869,26 +97055,25 @@ - (void)subscribeAttributeSupportedStreamingProtocolsWithParams:(MTRSubscribePar { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ContentLauncher::Attributes::SupportedStreamingProtocols::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeSupportedStreamingProtocolsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -97897,7 +97082,8 @@ + (void)readAttributeSupportedStreamingProtocolsWithAttributeCache:(MTRAttribute completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ContentLauncher::Attributes::SupportedStreamingProtocols::TypeInfo; @@ -97906,9 +97092,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -97918,14 +97103,15 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ContentLauncher::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -97935,28 +97121,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ContentLauncher::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ContentLauncher::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -97965,8 +97151,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ContentLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ContentLauncher::Attributes::GeneratedCommandList::TypeInfo; @@ -97975,9 +97162,8 @@ new MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -97987,14 +97173,15 @@ new MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ContentLauncher::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -98004,27 +97191,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ContentLauncher::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ContentLauncher::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -98033,8 +97221,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ContentLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ContentLauncher::Attributes::AcceptedCommandList::TypeInfo; @@ -98043,9 +97232,8 @@ new MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -98055,14 +97243,15 @@ new MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRContentLauncherAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRContentLauncherAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ContentLauncher::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -98071,27 +97260,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ContentLauncher::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ContentLauncher::Attributes::AttributeList::TypeInfo; - chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -98099,8 +97288,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRContentLauncherAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRContentLauncherAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ContentLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ContentLauncher::Attributes::AttributeList::TypeInfo; @@ -98109,9 +97299,8 @@ new MTRContentLauncherAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -98121,14 +97310,14 @@ new MTRContentLauncherAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ContentLauncher::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -98137,26 +97326,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ContentLauncher::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -98164,7 +97352,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ContentLauncher::Attributes::FeatureMap::TypeInfo; @@ -98173,9 +97362,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -98185,14 +97373,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ContentLauncher::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -98201,26 +97389,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ContentLauncher::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -98228,7 +97415,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ContentLauncher::Attributes::ClusterRevision::TypeInfo; @@ -98237,9 +97425,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -98545,12 +97732,13 @@ - (void)selectOutputWithParams:(MTRAudioOutputClusterSelectOutputParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AudioOutput::Commands::SelectOutput::Type request; @@ -98561,23 +97749,23 @@ new MTRCommandSuccessCallbackBridge( } request.index = params.index.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)renameOutputWithParams:(MTRAudioOutputClusterRenameOutputParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AudioOutput::Commands::RenameOutput::Type request; @@ -98589,23 +97777,22 @@ new MTRCommandSuccessCallbackBridge( request.index = params.index.unsignedCharValue; request.name = [self asCharSpan:params.name]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeOutputListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAudioOutputOutputListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAudioOutputOutputListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, AudioOutputOutputListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AudioOutput::Attributes::OutputList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOutputListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -98614,27 +97801,26 @@ - (void)subscribeAttributeOutputListWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AudioOutput::Attributes::OutputList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, AudioOutputOutputListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AudioOutput::Attributes::OutputList::TypeInfo; - chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOutputListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -98642,7 +97828,8 @@ + (void)readAttributeOutputListWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAudioOutputOutputListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAudioOutputOutputListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(AudioOutputOutputListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AudioOutput::Attributes::OutputList::TypeInfo; @@ -98651,9 +97838,8 @@ new MTRAudioOutputOutputListListAttributeCallbackBridge(queue, completion, ^(Can path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -98663,14 +97849,14 @@ new MTRAudioOutputOutputListListAttributeCallbackBridge(queue, completion, ^(Can - (void)readAttributeCurrentOutputWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AudioOutput::Attributes::CurrentOutput::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentOutputWithParams:(MTRSubscribeParams * _Nonnull)params @@ -98679,26 +97865,25 @@ - (void)subscribeAttributeCurrentOutputWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AudioOutput::Attributes::CurrentOutput::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentOutputWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -98706,7 +97891,8 @@ + (void)readAttributeCurrentOutputWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AudioOutput::Attributes::CurrentOutput::TypeInfo; @@ -98715,9 +97901,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -98727,14 +97912,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AudioOutputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = AudioOutput::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -98744,27 +97930,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AudioOutput::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AudioOutputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AudioOutput::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -98773,8 +97959,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(AudioOutputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AudioOutput::Attributes::GeneratedCommandList::TypeInfo; @@ -98783,9 +97970,8 @@ new MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -98795,14 +97981,15 @@ new MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AudioOutputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = AudioOutput::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -98812,27 +97999,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AudioOutput::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AudioOutputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AudioOutput::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -98841,8 +98028,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(AudioOutputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AudioOutput::Attributes::AcceptedCommandList::TypeInfo; @@ -98851,9 +98039,8 @@ new MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -98863,14 +98050,14 @@ new MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAudioOutputAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAudioOutputAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, AudioOutputAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AudioOutput::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -98879,27 +98066,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AudioOutput::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, AudioOutputAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AudioOutput::Attributes::AttributeList::TypeInfo; - chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -98907,7 +98093,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAudioOutputAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAudioOutputAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(AudioOutputAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AudioOutput::Attributes::AttributeList::TypeInfo; @@ -98916,9 +98103,8 @@ new MTRAudioOutputAttributeListListAttributeCallbackBridge(queue, completion, ^( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -98928,14 +98114,14 @@ new MTRAudioOutputAttributeListListAttributeCallbackBridge(queue, completion, ^( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AudioOutput::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -98944,26 +98130,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AudioOutput::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -98971,7 +98156,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AudioOutput::Attributes::FeatureMap::TypeInfo; @@ -98980,9 +98166,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -98992,14 +98177,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AudioOutput::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -99008,26 +98193,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AudioOutput::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -99035,7 +98219,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AudioOutput::Attributes::ClusterRevision::TypeInfo; @@ -99044,9 +98229,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -99339,8 +98523,10 @@ - (void)launchAppWithParams:(MTRApplicationLauncherClusterLaunchAppParams *)para { // Make a copy of params before we go async. params = [params copy]; - new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ApplicationLauncher::Commands::LaunchApp::Type request; @@ -99356,11 +98542,10 @@ new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQue definedValue_0 = [self asByteSpan:params.data]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)stopAppWithParams:(MTRApplicationLauncherClusterStopAppParams *)params @@ -99369,8 +98554,10 @@ - (void)stopAppWithParams:(MTRApplicationLauncherClusterStopAppParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ApplicationLauncher::Commands::StopApp::Type request; @@ -99382,11 +98569,10 @@ new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQue request.application.catalogVendorId = params.application.catalogVendorId.unsignedShortValue; request.application.applicationId = [self asCharSpan:params.application.applicationId]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)hideAppWithParams:(MTRApplicationLauncherClusterHideAppParams *)params @@ -99395,8 +98581,10 @@ - (void)hideAppWithParams:(MTRApplicationLauncherClusterHideAppParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ApplicationLauncher::Commands::HideApp::Type request; @@ -99408,23 +98596,23 @@ new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQue request.application.catalogVendorId = params.application.catalogVendorId.unsignedShortValue; request.application.applicationId = [self asCharSpan:params.application.applicationId]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeCatalogListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationLauncherCatalogListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherCatalogListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherCatalogListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationLauncher::Attributes::CatalogList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCatalogListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -99433,27 +98621,27 @@ - (void)subscribeAttributeCatalogListWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationLauncher::Attributes::CatalogList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherCatalogListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationLauncher::Attributes::CatalogList::TypeInfo; - chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCatalogListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -99461,8 +98649,9 @@ + (void)readAttributeCatalogListWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationLauncherCatalogListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherCatalogListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ApplicationLauncherCatalogListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationLauncher::Attributes::CatalogList::TypeInfo; @@ -99471,9 +98660,8 @@ new MTRApplicationLauncherCatalogListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -99484,14 +98672,15 @@ new MTRApplicationLauncherCatalogListListAttributeCallbackBridge( - (void)readAttributeCurrentAppWithCompletion:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherCurrentAppStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationLauncher::Attributes::CurrentApp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeCurrentAppWithValue:(MTRApplicationLauncherClusterApplicationEP * _Nullable)value @@ -99509,12 +98698,13 @@ - (void)writeAttributeCurrentAppWithValue:(MTRApplicationLauncherClusterApplicat params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -99536,13 +98726,11 @@ new MTRDefaultSuccessCallbackBridge( definedValue_2 = value.endpoint.unsignedShortValue; } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentAppWithParams:(MTRSubscribeParams * _Nonnull)params @@ -99552,27 +98740,27 @@ - (void)subscribeAttributeCurrentAppWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationLauncher::Attributes::CurrentApp::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherCurrentAppStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationLauncher::Attributes::CurrentApp::TypeInfo; - chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentAppWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -99581,8 +98769,9 @@ + (void)readAttributeCurrentAppWithAttributeCache:(MTRAttributeCacheContainer *) completion:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ApplicationLauncherCurrentAppStructAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationLauncher::Attributes::CurrentApp::TypeInfo; @@ -99591,9 +98780,8 @@ new MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -99603,14 +98791,15 @@ new MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge( - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationLauncher::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -99620,28 +98809,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationLauncher::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationLauncher::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -99650,8 +98839,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ApplicationLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationLauncher::Attributes::GeneratedCommandList::TypeInfo; @@ -99660,9 +98850,8 @@ new MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -99672,14 +98861,15 @@ new MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationLauncher::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -99689,28 +98879,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationLauncher::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationLauncher::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -99719,8 +98909,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ApplicationLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationLauncher::Attributes::AcceptedCommandList::TypeInfo; @@ -99729,9 +98920,8 @@ new MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -99741,14 +98931,15 @@ new MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationLauncherAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationLauncher::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -99757,27 +98948,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationLauncher::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationLauncher::Attributes::AttributeList::TypeInfo; - chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -99785,8 +98976,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationLauncherAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ApplicationLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationLauncher::Attributes::AttributeList::TypeInfo; @@ -99795,9 +98987,8 @@ new MTRApplicationLauncherAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -99807,14 +98998,14 @@ new MTRApplicationLauncherAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationLauncher::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -99823,26 +99014,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ApplicationLauncher::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -99850,7 +99040,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationLauncher::Attributes::FeatureMap::TypeInfo; @@ -99859,9 +99050,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -99871,14 +99061,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationLauncher::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -99887,26 +99077,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ApplicationLauncher::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -99914,7 +99103,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationLauncher::Attributes::ClusterRevision::TypeInfo; @@ -99923,9 +99113,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100233,14 +99422,14 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en - (void)readAttributeVendorNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::VendorName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100249,27 +99438,25 @@ - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationBasic::Attributes::VendorName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationBasic::Attributes::VendorName::TypeInfo; - chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -100277,7 +99464,8 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::VendorName::TypeInfo; @@ -100286,9 +99474,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100298,14 +99485,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::VendorID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100314,26 +99501,25 @@ - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRVendorIdAttributeCallbackSubscriptionBridge * callbackBridge = new MTRVendorIdAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ApplicationBasic::Attributes::VendorID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRVendorIdAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -100341,7 +99527,8 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(VendorIdAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::VendorID::TypeInfo; @@ -100350,9 +99537,8 @@ new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100362,14 +99548,14 @@ new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success - (void)readAttributeApplicationNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::ApplicationName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeApplicationNameWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100378,27 +99564,25 @@ - (void)subscribeAttributeApplicationNameWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationBasic::Attributes::ApplicationName::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationBasic::Attributes::ApplicationName::TypeInfo; - chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeApplicationNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -100406,7 +99590,8 @@ + (void)readAttributeApplicationNameWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::ApplicationName::TypeInfo; @@ -100415,9 +99600,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100427,14 +99611,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeProductIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::ProductID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeProductIDWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100443,26 +99627,25 @@ - (void)subscribeAttributeProductIDWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ApplicationBasic::Attributes::ProductID::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -100470,7 +99653,8 @@ + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::ProductID::TypeInfo; @@ -100479,9 +99663,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100492,14 +99675,15 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeApplicationWithCompletion:(void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicApplicationStructAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicApplicationStructAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicApplicationStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::Application::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeApplicationWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100509,27 +99693,27 @@ - (void)subscribeAttributeApplicationWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationBasic::Attributes::Application::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicApplicationStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationBasic::Attributes::Application::TypeInfo; - chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeApplicationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -100539,8 +99723,9 @@ + (void)readAttributeApplicationWithAttributeCache:(MTRAttributeCacheContainer * (void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicApplicationStructAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicApplicationStructAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ApplicationBasicApplicationStructAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::Application::TypeInfo; @@ -100549,9 +99734,8 @@ new MTRApplicationBasicApplicationStructAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100561,14 +99745,15 @@ new MTRApplicationBasicApplicationStructAttributeCallbackBridge( - (void)readAttributeStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicClusterApplicationStatusEnumAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::Status::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStatusWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100577,28 +99762,28 @@ - (void)subscribeAttributeStatusWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationBasic::Attributes::Status::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicClusterApplicationStatusEnumAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationBasic::Attributes::Status::TypeInfo; - chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -100606,8 +99791,9 @@ + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ApplicationBasicClusterApplicationStatusEnumAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::Status::TypeInfo; @@ -100616,9 +99802,8 @@ new MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100628,14 +99813,14 @@ new MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge( - (void)readAttributeApplicationVersionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::ApplicationVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeApplicationVersionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100645,27 +99830,25 @@ - (void)subscribeAttributeApplicationVersionWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationBasic::Attributes::ApplicationVersion::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationBasic::Attributes::ApplicationVersion::TypeInfo; - chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeApplicationVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -100674,7 +99857,8 @@ + (void)readAttributeApplicationVersionWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::ApplicationVersion::TypeInfo; @@ -100683,9 +99867,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100695,14 +99878,15 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeAllowedVendorListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicAllowedVendorListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::AllowedVendorList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAllowedVendorListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100711,27 +99895,27 @@ - (void)subscribeAttributeAllowedVendorListWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationBasic::Attributes::AllowedVendorList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicAllowedVendorListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationBasic::Attributes::AllowedVendorList::TypeInfo; - chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAllowedVendorListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -100739,8 +99923,9 @@ + (void)readAttributeAllowedVendorListWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ApplicationBasicAllowedVendorListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::AllowedVendorList::TypeInfo; @@ -100749,9 +99934,8 @@ new MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100761,14 +99945,15 @@ new MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge( - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100778,28 +99963,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationBasic::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationBasic::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -100808,8 +99993,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ApplicationBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::GeneratedCommandList::TypeInfo; @@ -100818,9 +100004,8 @@ new MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100830,14 +100015,15 @@ new MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100847,28 +100033,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationBasic::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationBasic::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -100877,8 +100063,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ApplicationBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::AcceptedCommandList::TypeInfo; @@ -100887,9 +100074,8 @@ new MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100899,14 +100085,15 @@ new MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100915,27 +100102,27 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ApplicationBasic::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ApplicationBasic::Attributes::AttributeList::TypeInfo; - chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -100943,8 +100130,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRApplicationBasicAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationBasicAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ApplicationBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::AttributeList::TypeInfo; @@ -100953,9 +100141,8 @@ new MTRApplicationBasicAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -100965,14 +100152,14 @@ new MTRApplicationBasicAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -100981,26 +100168,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ApplicationBasic::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -101008,7 +100194,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::FeatureMap::TypeInfo; @@ -101017,9 +100204,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -101029,14 +100215,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ApplicationBasic::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -101045,26 +100231,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ApplicationBasic::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -101072,7 +100257,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ApplicationBasic::Attributes::ClusterRevision::TypeInfo; @@ -101081,9 +100267,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -101568,8 +100753,10 @@ - (void)getSetupPINWithParams:(MTRAccountLoginClusterGetSetupPINParams *)params { // Make a copy of params before we go async. params = [params copy]; - new MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccountLoginClusterGetSetupPINResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AccountLogin::Commands::GetSetupPIN::Type request; @@ -101583,23 +100770,23 @@ new MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(self.callbackQueue, } request.tempAccountIdentifier = [self asCharSpan:params.tempAccountIdentifier]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)loginWithParams:(MTRAccountLoginClusterLoginParams *)params completion:(MTRStatusCompletion)completion { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AccountLogin::Commands::Login::Type request; @@ -101614,11 +100801,10 @@ new MTRCommandSuccessCallbackBridge( request.tempAccountIdentifier = [self asCharSpan:params.tempAccountIdentifier]; request.setupPIN = [self asCharSpan:params.setupPIN]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)logoutWithCompletion:(MTRStatusCompletion)completion @@ -101629,12 +100815,13 @@ - (void)logoutWithParams:(MTRAccountLoginClusterLogoutParams * _Nullable)params { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AccountLogin::Commands::Logout::Type request; @@ -101647,23 +100834,23 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(10000); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccountLoginGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = AccountLogin::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -101673,27 +100860,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AccountLogin::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccountLoginGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AccountLogin::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -101702,8 +100889,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(AccountLoginGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccountLogin::Attributes::GeneratedCommandList::TypeInfo; @@ -101712,9 +100900,8 @@ new MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -101724,14 +100911,15 @@ new MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccountLoginAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = AccountLogin::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -101741,27 +100929,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AccountLogin::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccountLoginAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AccountLogin::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -101770,8 +100958,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(AccountLoginAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccountLogin::Attributes::AcceptedCommandList::TypeInfo; @@ -101780,9 +100969,8 @@ new MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -101792,14 +100980,14 @@ new MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccountLoginAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccountLoginAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccountLoginAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AccountLogin::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -101808,27 +100996,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = AccountLogin::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccountLoginAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AccountLogin::Attributes::AttributeList::TypeInfo; - chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -101836,7 +101023,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRAccountLoginAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccountLoginAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(AccountLoginAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccountLogin::Attributes::AttributeList::TypeInfo; @@ -101845,9 +101033,8 @@ new MTRAccountLoginAttributeListListAttributeCallbackBridge(queue, completion, ^ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -101857,14 +101044,14 @@ new MTRAccountLoginAttributeListListAttributeCallbackBridge(queue, completion, ^ - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AccountLogin::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -101873,26 +101060,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AccountLogin::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -101900,7 +101086,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccountLogin::Attributes::FeatureMap::TypeInfo; @@ -101909,9 +101096,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -101921,14 +101107,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = AccountLogin::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -101937,26 +101123,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = AccountLogin::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -101964,7 +101149,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = AccountLogin::Attributes::ClusterRevision::TypeInfo; @@ -101973,9 +101159,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102212,12 +101397,13 @@ - (void)getProfileInfoCommandWithParams:(MTRElectricalMeasurementClusterGetProfi { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ElectricalMeasurement::Commands::GetProfileInfoCommand::Type request; @@ -102227,11 +101413,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)getMeasurementProfileCommandWithParams:(MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams *)params @@ -102239,12 +101424,13 @@ - (void)getMeasurementProfileCommandWithParams:(MTRElectricalMeasurementClusterG { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ElectricalMeasurement::Commands::GetMeasurementProfileCommand::Type request; @@ -102257,23 +101443,22 @@ new MTRCommandSuccessCallbackBridge( request.startTime = params.startTime.unsignedIntValue; request.numberOfIntervals = params.numberOfIntervals.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeMeasurementTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::MeasurementType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasurementTypeWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102282,26 +101467,25 @@ - (void)subscribeAttributeMeasurementTypeWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::MeasurementType::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasurementTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -102309,7 +101493,8 @@ + (void)readAttributeMeasurementTypeWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::MeasurementType::TypeInfo; @@ -102318,9 +101503,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102330,14 +101514,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcVoltageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102346,26 +101530,25 @@ - (void)subscribeAttributeDcVoltageWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -102373,7 +101556,8 @@ + (void)readAttributeDcVoltageWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcVoltage::TypeInfo; @@ -102382,9 +101566,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102394,14 +101577,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcVoltageMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcVoltageMinWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102410,26 +101593,25 @@ - (void)subscribeAttributeDcVoltageMinWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcVoltageMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -102437,7 +101619,8 @@ + (void)readAttributeDcVoltageMinWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMin::TypeInfo; @@ -102446,9 +101629,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102458,14 +101640,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcVoltageMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcVoltageMaxWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102474,26 +101656,25 @@ - (void)subscribeAttributeDcVoltageMaxWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -102501,7 +101682,8 @@ + (void)readAttributeDcVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMax::TypeInfo; @@ -102510,9 +101692,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102522,14 +101703,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102538,26 +101719,25 @@ - (void)subscribeAttributeDcCurrentWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -102565,7 +101745,8 @@ + (void)readAttributeDcCurrentWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcCurrent::TypeInfo; @@ -102574,9 +101755,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102586,14 +101766,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcCurrentMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcCurrentMinWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102602,26 +101782,25 @@ - (void)subscribeAttributeDcCurrentMinWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcCurrentMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -102629,7 +101808,8 @@ + (void)readAttributeDcCurrentMinWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMin::TypeInfo; @@ -102638,9 +101818,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102650,14 +101829,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcCurrentMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcCurrentMaxWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102666,26 +101845,25 @@ - (void)subscribeAttributeDcCurrentMaxWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -102693,7 +101871,8 @@ + (void)readAttributeDcCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMax::TypeInfo; @@ -102702,9 +101881,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102714,14 +101892,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcPower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcPowerWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102730,26 +101908,25 @@ - (void)subscribeAttributeDcPowerWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcPower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -102757,7 +101934,8 @@ + (void)readAttributeDcPowerWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcPower::TypeInfo; @@ -102766,9 +101944,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102778,14 +101955,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcPowerMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcPowerMinWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102794,26 +101971,25 @@ - (void)subscribeAttributeDcPowerMinWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcPowerMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -102821,7 +101997,8 @@ + (void)readAttributeDcPowerMinWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMin::TypeInfo; @@ -102830,9 +102007,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102842,14 +102018,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcPowerMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcPowerMaxWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102858,26 +102034,25 @@ - (void)subscribeAttributeDcPowerMaxWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcPowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -102885,7 +102060,8 @@ + (void)readAttributeDcPowerMaxWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMax::TypeInfo; @@ -102894,9 +102070,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102906,14 +102081,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcVoltageMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcVoltageMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102923,26 +102098,25 @@ - (void)subscribeAttributeDcVoltageMultiplierWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -102951,7 +102125,8 @@ + (void)readAttributeDcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMultiplier::TypeInfo; @@ -102960,9 +102135,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -102972,14 +102146,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcVoltageDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcVoltageDivisorWithParams:(MTRSubscribeParams * _Nonnull)params @@ -102988,26 +102162,25 @@ - (void)subscribeAttributeDcVoltageDivisorWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103015,7 +102188,8 @@ + (void)readAttributeDcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageDivisor::TypeInfo; @@ -103024,9 +102198,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103036,14 +102209,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcCurrentMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103053,26 +102226,25 @@ - (void)subscribeAttributeDcCurrentMultiplierWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103081,7 +102253,8 @@ + (void)readAttributeDcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMultiplier::TypeInfo; @@ -103090,9 +102263,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103102,14 +102274,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcCurrentDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcCurrentDivisorWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103118,26 +102290,25 @@ - (void)subscribeAttributeDcCurrentDivisorWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103145,7 +102316,8 @@ + (void)readAttributeDcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentDivisor::TypeInfo; @@ -103154,9 +102326,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103166,14 +102337,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcPowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcPowerMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103182,26 +102353,25 @@ - (void)subscribeAttributeDcPowerMultiplierWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcPowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103209,7 +102379,8 @@ + (void)readAttributeDcPowerMultiplierWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMultiplier::TypeInfo; @@ -103218,9 +102389,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103230,14 +102400,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeDcPowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::DcPowerDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeDcPowerDivisorWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103246,26 +102416,25 @@ - (void)subscribeAttributeDcPowerDivisorWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::DcPowerDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeDcPowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103273,7 +102442,8 @@ + (void)readAttributeDcPowerDivisorWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::DcPowerDivisor::TypeInfo; @@ -103282,9 +102452,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103294,14 +102463,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcFrequency::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcFrequencyWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103310,26 +102479,25 @@ - (void)subscribeAttributeAcFrequencyWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcFrequency::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103337,7 +102505,8 @@ + (void)readAttributeAcFrequencyWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcFrequency::TypeInfo; @@ -103346,9 +102515,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103358,14 +102526,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcFrequencyMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcFrequencyMinWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103374,26 +102542,25 @@ - (void)subscribeAttributeAcFrequencyMinWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcFrequencyMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103401,7 +102568,8 @@ + (void)readAttributeAcFrequencyMinWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMin::TypeInfo; @@ -103410,9 +102578,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103422,14 +102589,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcFrequencyMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcFrequencyMaxWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103438,26 +102605,25 @@ - (void)subscribeAttributeAcFrequencyMaxWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcFrequencyMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103465,7 +102631,8 @@ + (void)readAttributeAcFrequencyMaxWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMax::TypeInfo; @@ -103474,9 +102641,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103486,14 +102652,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeNeutralCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::NeutralCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNeutralCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103502,26 +102668,25 @@ - (void)subscribeAttributeNeutralCurrentWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::NeutralCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNeutralCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103529,7 +102694,8 @@ + (void)readAttributeNeutralCurrentWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::NeutralCurrent::TypeInfo; @@ -103538,9 +102704,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103550,14 +102715,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTotalActivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::TotalActivePower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTotalActivePowerWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103566,26 +102731,25 @@ - (void)subscribeAttributeTotalActivePowerWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::TotalActivePower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTotalActivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103593,7 +102757,8 @@ + (void)readAttributeTotalActivePowerWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::TotalActivePower::TypeInfo; @@ -103602,9 +102767,8 @@ new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103614,14 +102778,14 @@ new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTotalReactivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::TotalReactivePower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTotalReactivePowerWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103631,26 +102795,25 @@ - (void)subscribeAttributeTotalReactivePowerWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::TotalReactivePower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTotalReactivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103659,7 +102822,8 @@ + (void)readAttributeTotalReactivePowerWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::TotalReactivePower::TypeInfo; @@ -103668,9 +102832,8 @@ new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103680,14 +102843,14 @@ new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeTotalApparentPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::TotalApparentPower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTotalApparentPowerWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103697,26 +102860,25 @@ - (void)subscribeAttributeTotalApparentPowerWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::TotalApparentPower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTotalApparentPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103725,7 +102887,8 @@ + (void)readAttributeTotalApparentPowerWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::TotalApparentPower::TypeInfo; @@ -103734,9 +102897,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103747,14 +102909,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasured1stHarmonicCurrentWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::Measured1stHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasured1stHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103764,26 +102926,25 @@ - (void)subscribeAttributeMeasured1stHarmonicCurrentWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::Measured1stHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasured1stHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103792,7 +102953,8 @@ + (void)readAttributeMeasured1stHarmonicCurrentWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::Measured1stHarmonicCurrent::TypeInfo; @@ -103801,9 +102963,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103814,14 +102975,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasured3rdHarmonicCurrentWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::Measured3rdHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasured3rdHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103831,26 +102992,25 @@ - (void)subscribeAttributeMeasured3rdHarmonicCurrentWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::Measured3rdHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasured3rdHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103859,7 +103019,8 @@ + (void)readAttributeMeasured3rdHarmonicCurrentWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::Measured3rdHarmonicCurrent::TypeInfo; @@ -103868,9 +103029,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103881,14 +103041,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasured5thHarmonicCurrentWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::Measured5thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasured5thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103898,26 +103058,25 @@ - (void)subscribeAttributeMeasured5thHarmonicCurrentWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::Measured5thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasured5thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103926,7 +103085,8 @@ + (void)readAttributeMeasured5thHarmonicCurrentWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::Measured5thHarmonicCurrent::TypeInfo; @@ -103935,9 +103095,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -103948,14 +103107,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasured7thHarmonicCurrentWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::Measured7thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasured7thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -103965,26 +103124,25 @@ - (void)subscribeAttributeMeasured7thHarmonicCurrentWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::Measured7thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasured7thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -103993,7 +103151,8 @@ + (void)readAttributeMeasured7thHarmonicCurrentWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::Measured7thHarmonicCurrent::TypeInfo; @@ -104002,9 +103161,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104015,14 +103173,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasured9thHarmonicCurrentWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::Measured9thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasured9thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104032,26 +103190,25 @@ - (void)subscribeAttributeMeasured9thHarmonicCurrentWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::Measured9thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasured9thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104060,7 +103217,8 @@ + (void)readAttributeMeasured9thHarmonicCurrentWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::Measured9thHarmonicCurrent::TypeInfo; @@ -104069,9 +103227,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104082,14 +103239,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasured11thHarmonicCurrentWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::Measured11thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasured11thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104099,26 +103256,25 @@ - (void)subscribeAttributeMeasured11thHarmonicCurrentWithParams:(MTRSubscribePar { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::Measured11thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasured11thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104127,7 +103283,8 @@ + (void)readAttributeMeasured11thHarmonicCurrentWithAttributeCache:(MTRAttribute completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::Measured11thHarmonicCurrent::TypeInfo; @@ -104136,9 +103293,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104149,14 +103305,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasuredPhase1stHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase1stHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasuredPhase1stHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104167,26 +103323,25 @@ - (void)subscribeAttributeMeasuredPhase1stHarmonicCurrentWithParams:(MTRSubscrib { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase1stHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104195,7 +103350,8 @@ + (void)readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache:(MTRAttri completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase1stHarmonicCurrent::TypeInfo; @@ -104204,9 +103360,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104217,14 +103372,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase3rdHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104235,26 +103390,25 @@ - (void)subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithParams:(MTRSubscrib { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase3rdHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104263,7 +103417,8 @@ + (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache:(MTRAttri completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase3rdHarmonicCurrent::TypeInfo; @@ -104272,9 +103427,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104285,14 +103439,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasuredPhase5thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase5thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasuredPhase5thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104303,26 +103457,25 @@ - (void)subscribeAttributeMeasuredPhase5thHarmonicCurrentWithParams:(MTRSubscrib { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase5thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104331,7 +103484,8 @@ + (void)readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache:(MTRAttri completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase5thHarmonicCurrent::TypeInfo; @@ -104340,9 +103494,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104353,14 +103506,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasuredPhase7thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase7thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasuredPhase7thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104371,26 +103524,25 @@ - (void)subscribeAttributeMeasuredPhase7thHarmonicCurrentWithParams:(MTRSubscrib { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase7thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104399,7 +103551,8 @@ + (void)readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache:(MTRAttri completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase7thHarmonicCurrent::TypeInfo; @@ -104408,9 +103561,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104421,14 +103573,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasuredPhase9thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase9thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasuredPhase9thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104439,26 +103591,25 @@ - (void)subscribeAttributeMeasuredPhase9thHarmonicCurrentWithParams:(MTRSubscrib { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase9thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104467,7 +103618,8 @@ + (void)readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache:(MTRAttri completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase9thHarmonicCurrent::TypeInfo; @@ -104476,9 +103628,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104489,14 +103640,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeMeasuredPhase11thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase11thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeMeasuredPhase11thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104507,26 +103658,25 @@ - (void)subscribeAttributeMeasuredPhase11thHarmonicCurrentWithParams:(MTRSubscri { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase11thHarmonicCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104535,7 +103685,8 @@ + (void)readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache:(MTRAttr completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase11thHarmonicCurrent::TypeInfo; @@ -104544,9 +103695,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104556,14 +103706,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcFrequencyMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcFrequencyMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104573,26 +103723,25 @@ - (void)subscribeAttributeAcFrequencyMultiplierWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcFrequencyMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104601,7 +103750,8 @@ + (void)readAttributeAcFrequencyMultiplierWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMultiplier::TypeInfo; @@ -104610,9 +103760,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104622,14 +103771,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcFrequencyDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcFrequencyDivisorWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104639,26 +103788,25 @@ - (void)subscribeAttributeAcFrequencyDivisorWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcFrequencyDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104667,7 +103815,8 @@ + (void)readAttributeAcFrequencyDivisorWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyDivisor::TypeInfo; @@ -104676,9 +103825,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104688,14 +103836,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::PowerMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePowerMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104704,26 +103852,25 @@ - (void)subscribeAttributePowerMultiplierWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::PowerMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104731,7 +103878,8 @@ + (void)readAttributePowerMultiplierWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::PowerMultiplier::TypeInfo; @@ -104740,9 +103888,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104752,14 +103899,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::PowerDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePowerDivisorWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104768,26 +103915,25 @@ - (void)subscribeAttributePowerDivisorWithParams:(MTRSubscribeParams * _Nonnull) { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::PowerDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104795,7 +103941,8 @@ + (void)readAttributePowerDivisorWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::PowerDivisor::TypeInfo; @@ -104804,9 +103951,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104817,14 +103963,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeHarmonicCurrentMultiplierWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::HarmonicCurrentMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeHarmonicCurrentMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104834,26 +103980,25 @@ - (void)subscribeAttributeHarmonicCurrentMultiplierWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::HarmonicCurrentMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104862,7 +104007,8 @@ + (void)readAttributeHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::HarmonicCurrentMultiplier::TypeInfo; @@ -104871,9 +104017,8 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104884,14 +104029,14 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributePhaseHarmonicCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::PhaseHarmonicCurrentMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePhaseHarmonicCurrentMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104902,26 +104047,25 @@ - (void)subscribeAttributePhaseHarmonicCurrentMultiplierWithParams:(MTRSubscribe { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::PhaseHarmonicCurrentMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104930,7 +104074,8 @@ + (void)readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache:(MTRAttrib completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::PhaseHarmonicCurrentMultiplier::TypeInfo; @@ -104939,9 +104084,8 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -104951,14 +104095,14 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeInstantaneousVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInstantaneousVoltageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -104968,26 +104112,25 @@ - (void)subscribeAttributeInstantaneousVoltageWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInstantaneousVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -104996,7 +104139,8 @@ + (void)readAttributeInstantaneousVoltageWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousVoltage::TypeInfo; @@ -105005,9 +104149,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105018,14 +104161,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInstantaneousLineCurrentWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousLineCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInstantaneousLineCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105035,26 +104178,25 @@ - (void)subscribeAttributeInstantaneousLineCurrentWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousLineCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInstantaneousLineCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105063,7 +104205,8 @@ + (void)readAttributeInstantaneousLineCurrentWithAttributeCache:(MTRAttributeCac completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousLineCurrent::TypeInfo; @@ -105072,9 +104215,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105085,14 +104227,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInstantaneousActiveCurrentWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousActiveCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInstantaneousActiveCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105102,26 +104244,25 @@ - (void)subscribeAttributeInstantaneousActiveCurrentWithParams:(MTRSubscribePara { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousActiveCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInstantaneousActiveCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105130,7 +104271,8 @@ + (void)readAttributeInstantaneousActiveCurrentWithAttributeCache:(MTRAttributeC completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousActiveCurrent::TypeInfo; @@ -105139,9 +104281,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105152,14 +104293,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInstantaneousReactiveCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousReactiveCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInstantaneousReactiveCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105170,26 +104311,25 @@ - (void)subscribeAttributeInstantaneousReactiveCurrentWithParams:(MTRSubscribePa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousReactiveCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInstantaneousReactiveCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105198,7 +104338,8 @@ + (void)readAttributeInstantaneousReactiveCurrentWithAttributeCache:(MTRAttribut completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousReactiveCurrent::TypeInfo; @@ -105207,9 +104348,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105219,14 +104359,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInstantaneousPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousPower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInstantaneousPowerWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105236,26 +104376,25 @@ - (void)subscribeAttributeInstantaneousPowerWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousPower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInstantaneousPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105264,7 +104403,8 @@ + (void)readAttributeInstantaneousPowerWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousPower::TypeInfo; @@ -105273,9 +104413,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105285,14 +104424,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105301,26 +104440,25 @@ - (void)subscribeAttributeRmsVoltageWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105328,7 +104466,8 @@ + (void)readAttributeRmsVoltageWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltage::TypeInfo; @@ -105337,9 +104476,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105349,14 +104487,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageMinWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105365,26 +104503,25 @@ - (void)subscribeAttributeRmsVoltageMinWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105392,7 +104529,8 @@ + (void)readAttributeRmsVoltageMinWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMin::TypeInfo; @@ -105401,9 +104539,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105413,14 +104550,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageMaxWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105429,26 +104566,25 @@ - (void)subscribeAttributeRmsVoltageMaxWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105456,7 +104592,8 @@ + (void)readAttributeRmsVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMax::TypeInfo; @@ -105465,9 +104602,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105477,14 +104613,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsCurrentWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105493,26 +104629,25 @@ - (void)subscribeAttributeRmsCurrentWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrent::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105520,7 +104655,8 @@ + (void)readAttributeRmsCurrentWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrent::TypeInfo; @@ -105529,9 +104665,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105541,14 +104676,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsCurrentMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsCurrentMinWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105557,26 +104692,25 @@ - (void)subscribeAttributeRmsCurrentMinWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsCurrentMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105584,7 +104718,8 @@ + (void)readAttributeRmsCurrentMinWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMin::TypeInfo; @@ -105593,9 +104728,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105605,14 +104739,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsCurrentMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsCurrentMaxWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105621,26 +104755,25 @@ - (void)subscribeAttributeRmsCurrentMaxWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105648,7 +104781,8 @@ + (void)readAttributeRmsCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMax::TypeInfo; @@ -105657,9 +104791,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105669,14 +104802,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ActivePower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActivePowerWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105685,26 +104818,25 @@ - (void)subscribeAttributeActivePowerWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ActivePower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105712,7 +104844,8 @@ + (void)readAttributeActivePowerWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ActivePower::TypeInfo; @@ -105721,9 +104854,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105733,14 +104865,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActivePowerMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActivePowerMinWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105749,26 +104881,25 @@ - (void)subscribeAttributeActivePowerMinWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMin::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActivePowerMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105776,7 +104907,8 @@ + (void)readAttributeActivePowerMinWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMin::TypeInfo; @@ -105785,9 +104917,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105797,14 +104928,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActivePowerMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActivePowerMaxWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105813,26 +104944,25 @@ - (void)subscribeAttributeActivePowerMaxWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMax::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActivePowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105840,7 +104970,8 @@ + (void)readAttributeActivePowerMaxWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMax::TypeInfo; @@ -105849,9 +104980,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105861,14 +104991,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeReactivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ReactivePower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeReactivePowerWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105877,26 +105007,25 @@ - (void)subscribeAttributeReactivePowerWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ReactivePower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeReactivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105904,7 +105033,8 @@ + (void)readAttributeReactivePowerWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ReactivePower::TypeInfo; @@ -105913,9 +105043,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105925,14 +105054,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeApparentPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ApparentPower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeApparentPowerWithParams:(MTRSubscribeParams * _Nonnull)params @@ -105941,26 +105070,25 @@ - (void)subscribeAttributeApparentPowerWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ApparentPower::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeApparentPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -105968,7 +105096,8 @@ + (void)readAttributeApparentPowerWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ApparentPower::TypeInfo; @@ -105977,9 +105106,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -105989,14 +105117,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePowerFactorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::PowerFactor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePowerFactorWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106005,26 +105133,25 @@ - (void)subscribeAttributePowerFactorWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::PowerFactor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePowerFactorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106032,7 +105159,8 @@ + (void)readAttributePowerFactorWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::PowerFactor::TypeInfo; @@ -106041,9 +105169,8 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -106054,14 +105181,14 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeAverageRmsVoltageMeasurementPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeAverageRmsVoltageMeasurementPeriodWithValue:(NSNumber * _Nonnull)value @@ -106077,12 +105204,13 @@ - (void)writeAttributeAverageRmsVoltageMeasurementPeriodWithValue:(NSNumber * _N params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -106094,13 +105222,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriod::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106111,26 +105237,25 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodWithParams:(MTRSubsc { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106139,7 +105264,8 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:(MTRAt completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriod::TypeInfo; @@ -106148,9 +105274,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -106161,14 +105286,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAverageRmsUnderVoltageCounterWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounter::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeAverageRmsUnderVoltageCounterWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -106183,12 +105308,13 @@ - (void)writeAttributeAverageRmsUnderVoltageCounterWithValue:(NSNumber * _Nonnul params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -106200,13 +105326,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounter::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAverageRmsUnderVoltageCounterWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106217,26 +105341,25 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterWithParams:(MTRSubscribeP { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounter::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAverageRmsUnderVoltageCounterWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106245,7 +105368,8 @@ + (void)readAttributeAverageRmsUnderVoltageCounterWithAttributeCache:(MTRAttribu completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounter::TypeInfo; @@ -106254,9 +105378,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -106267,14 +105390,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsExtremeOverVoltagePeriodWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeRmsExtremeOverVoltagePeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -106289,12 +105412,13 @@ - (void)writeAttributeRmsExtremeOverVoltagePeriodWithValue:(NSNumber * _Nonnull) params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -106306,13 +105430,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriod::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsExtremeOverVoltagePeriodWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106322,26 +105444,25 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodWithParams:(MTRSubscribePar { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106350,7 +105471,8 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache:(MTRAttribute completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriod::TypeInfo; @@ -106359,9 +105481,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -106372,14 +105493,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsExtremeUnderVoltagePeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeRmsExtremeUnderVoltagePeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -106394,12 +105515,13 @@ - (void)writeAttributeRmsExtremeUnderVoltagePeriodWithValue:(NSNumber * _Nonnull params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -106411,13 +105533,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriod::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106428,26 +105548,25 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodWithParams:(MTRSubscribePa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106456,7 +105575,8 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache:(MTRAttribut completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriod::TypeInfo; @@ -106465,9 +105585,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -106477,14 +105596,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageSagPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeRmsVoltageSagPeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -106499,12 +105618,13 @@ - (void)writeAttributeRmsVoltageSagPeriodWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -106516,13 +105636,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriod::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageSagPeriodWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106532,26 +105650,25 @@ - (void)subscribeAttributeRmsVoltageSagPeriodWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageSagPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106560,7 +105677,8 @@ + (void)readAttributeRmsVoltageSagPeriodWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriod::TypeInfo; @@ -106569,9 +105687,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -106581,14 +105698,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageSwellPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeRmsVoltageSwellPeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -106603,12 +105720,13 @@ - (void)writeAttributeRmsVoltageSwellPeriodWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -106620,13 +105738,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriod::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageSwellPeriodWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106636,26 +105752,25 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriod::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageSwellPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106664,7 +105779,8 @@ + (void)readAttributeRmsVoltageSwellPeriodWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriod::TypeInfo; @@ -106673,9 +105789,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -106685,14 +105800,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcVoltageMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcVoltageMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106702,26 +105817,25 @@ - (void)subscribeAttributeAcVoltageMultiplierWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106730,7 +105844,8 @@ + (void)readAttributeAcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageMultiplier::TypeInfo; @@ -106739,9 +105854,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -106751,14 +105865,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcVoltageDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcVoltageDivisorWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106767,26 +105881,25 @@ - (void)subscribeAttributeAcVoltageDivisorWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106794,7 +105907,8 @@ + (void)readAttributeAcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageDivisor::TypeInfo; @@ -106803,9 +105917,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -106815,14 +105928,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcCurrentMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106832,26 +105945,25 @@ - (void)subscribeAttributeAcCurrentMultiplierWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106860,7 +105972,8 @@ + (void)readAttributeAcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentMultiplier::TypeInfo; @@ -106869,9 +105982,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -106881,14 +105993,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcCurrentDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcCurrentDivisorWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106897,26 +106009,25 @@ - (void)subscribeAttributeAcCurrentDivisorWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106924,7 +106035,8 @@ + (void)readAttributeAcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentDivisor::TypeInfo; @@ -106933,9 +106045,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -106945,14 +106056,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcPowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcPowerMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcPowerMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params @@ -106961,26 +106072,25 @@ - (void)subscribeAttributeAcPowerMultiplierWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcPowerMultiplier::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcPowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -106988,7 +106098,8 @@ + (void)readAttributeAcPowerMultiplierWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcPowerMultiplier::TypeInfo; @@ -106997,9 +106108,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107009,14 +106119,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcPowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcPowerDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcPowerDivisorWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107025,26 +106135,25 @@ - (void)subscribeAttributeAcPowerDivisorWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcPowerDivisor::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcPowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107052,7 +106161,8 @@ + (void)readAttributeAcPowerDivisorWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcPowerDivisor::TypeInfo; @@ -107061,9 +106171,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107073,14 +106182,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeOverloadAlarmsMaskWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::OverloadAlarmsMask::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOverloadAlarmsMaskWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -107095,12 +106204,13 @@ - (void)writeAttributeOverloadAlarmsMaskWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -107112,13 +106222,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ElectricalMeasurement::Attributes::OverloadAlarmsMask::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOverloadAlarmsMaskWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107128,26 +106236,25 @@ - (void)subscribeAttributeOverloadAlarmsMaskWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::OverloadAlarmsMask::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107156,7 +106263,8 @@ + (void)readAttributeOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::OverloadAlarmsMask::TypeInfo; @@ -107165,9 +106273,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107177,14 +106284,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeVoltageOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::VoltageOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeVoltageOverloadWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107193,26 +106300,25 @@ - (void)subscribeAttributeVoltageOverloadWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::VoltageOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeVoltageOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107220,7 +106326,8 @@ + (void)readAttributeVoltageOverloadWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::VoltageOverload::TypeInfo; @@ -107229,9 +106336,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107241,14 +106347,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeCurrentOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::CurrentOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCurrentOverloadWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107257,26 +106363,25 @@ - (void)subscribeAttributeCurrentOverloadWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::CurrentOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCurrentOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107284,7 +106389,8 @@ + (void)readAttributeCurrentOverloadWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::CurrentOverload::TypeInfo; @@ -107293,9 +106399,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107305,14 +106410,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcOverloadAlarmsMaskWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcOverloadAlarmsMask::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeAcOverloadAlarmsMaskWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -107327,12 +106432,13 @@ - (void)writeAttributeAcOverloadAlarmsMaskWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -107344,13 +106450,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = ElectricalMeasurement::Attributes::AcOverloadAlarmsMask::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcOverloadAlarmsMaskWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107360,26 +106464,25 @@ - (void)subscribeAttributeAcOverloadAlarmsMaskWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcOverloadAlarmsMask::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107388,7 +106491,8 @@ + (void)readAttributeAcOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcOverloadAlarmsMask::TypeInfo; @@ -107397,9 +106501,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107409,14 +106512,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcVoltageOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcVoltageOverloadWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107425,26 +106528,25 @@ - (void)subscribeAttributeAcVoltageOverloadWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcVoltageOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107452,7 +106554,8 @@ + (void)readAttributeAcVoltageOverloadWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageOverload::TypeInfo; @@ -107461,9 +106564,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107473,14 +106575,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcCurrentOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcCurrentOverloadWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107489,26 +106591,25 @@ - (void)subscribeAttributeAcCurrentOverloadWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcCurrentOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107516,7 +106617,8 @@ + (void)readAttributeAcCurrentOverloadWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentOverload::TypeInfo; @@ -107525,9 +106627,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107537,14 +106638,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcActivePowerOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcActivePowerOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcActivePowerOverloadWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107554,26 +106655,25 @@ - (void)subscribeAttributeAcActivePowerOverloadWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcActivePowerOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcActivePowerOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107582,7 +106682,8 @@ + (void)readAttributeAcActivePowerOverloadWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcActivePowerOverload::TypeInfo; @@ -107591,9 +106692,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107604,14 +106704,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAcReactivePowerOverloadWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcReactivePowerOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcReactivePowerOverloadWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107621,26 +106721,25 @@ - (void)subscribeAttributeAcReactivePowerOverloadWithParams:(MTRSubscribeParams { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AcReactivePowerOverload::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcReactivePowerOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107649,7 +106748,8 @@ + (void)readAttributeAcReactivePowerOverloadWithAttributeCache:(MTRAttributeCach completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcReactivePowerOverload::TypeInfo; @@ -107658,9 +106758,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107670,14 +106769,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAverageRmsOverVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAverageRmsOverVoltageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107687,26 +106786,25 @@ - (void)subscribeAttributeAverageRmsOverVoltageWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAverageRmsOverVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107715,7 +106813,8 @@ + (void)readAttributeAverageRmsOverVoltageWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltage::TypeInfo; @@ -107724,9 +106823,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107737,14 +106835,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAverageRmsUnderVoltageWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAverageRmsUnderVoltageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107754,26 +106852,25 @@ - (void)subscribeAttributeAverageRmsUnderVoltageWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAverageRmsUnderVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107782,7 +106879,8 @@ + (void)readAttributeAverageRmsUnderVoltageWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltage::TypeInfo; @@ -107791,9 +106889,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107803,14 +106900,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsExtremeOverVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsExtremeOverVoltageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107820,26 +106917,25 @@ - (void)subscribeAttributeRmsExtremeOverVoltageWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsExtremeOverVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107848,7 +106944,8 @@ + (void)readAttributeRmsExtremeOverVoltageWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltage::TypeInfo; @@ -107857,9 +106954,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107870,14 +106966,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsExtremeUnderVoltageWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsExtremeUnderVoltageWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107887,26 +106983,25 @@ - (void)subscribeAttributeRmsExtremeUnderVoltageWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltage::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsExtremeUnderVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107915,7 +107010,8 @@ + (void)readAttributeRmsExtremeUnderVoltageWithAttributeCache:(MTRAttributeCache completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltage::TypeInfo; @@ -107924,9 +107020,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -107936,14 +107031,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageSagWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSag::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageSagWithParams:(MTRSubscribeParams * _Nonnull)params @@ -107952,26 +107047,25 @@ - (void)subscribeAttributeRmsVoltageSagWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSag::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageSagWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -107979,7 +107073,8 @@ + (void)readAttributeRmsVoltageSagWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSag::TypeInfo; @@ -107988,9 +107083,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108000,14 +107094,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageSwellWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwell::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageSwellWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108016,26 +107110,25 @@ - (void)subscribeAttributeRmsVoltageSwellWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwell::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageSwellWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108043,7 +107136,8 @@ + (void)readAttributeRmsVoltageSwellWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwell::TypeInfo; @@ -108052,9 +107146,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108064,14 +107157,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeLineCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLineCurrentPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108080,26 +107173,25 @@ - (void)subscribeAttributeLineCurrentPhaseBWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLineCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108107,7 +107199,8 @@ + (void)readAttributeLineCurrentPhaseBWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseB::TypeInfo; @@ -108116,9 +107209,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108128,14 +107220,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActiveCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveCurrentPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108145,26 +107237,25 @@ - (void)subscribeAttributeActiveCurrentPhaseBWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108173,7 +107264,8 @@ + (void)readAttributeActiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseB::TypeInfo; @@ -108182,9 +107274,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108194,14 +107285,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeReactiveCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeReactiveCurrentPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108211,26 +107302,25 @@ - (void)subscribeAttributeReactiveCurrentPhaseBWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeReactiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108239,7 +107329,8 @@ + (void)readAttributeReactiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseB::TypeInfo; @@ -108248,9 +107339,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108260,14 +107350,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltagePhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltagePhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108276,26 +107366,25 @@ - (void)subscribeAttributeRmsVoltagePhaseBWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltagePhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108303,7 +107392,8 @@ + (void)readAttributeRmsVoltagePhaseBWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseB::TypeInfo; @@ -108312,9 +107402,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108324,14 +107413,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageMinPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108341,26 +107430,25 @@ - (void)subscribeAttributeRmsVoltageMinPhaseBWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108369,7 +107457,8 @@ + (void)readAttributeRmsVoltageMinPhaseBWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseB::TypeInfo; @@ -108378,9 +107467,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108390,14 +107478,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageMaxPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108407,26 +107495,25 @@ - (void)subscribeAttributeRmsVoltageMaxPhaseBWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108435,7 +107522,8 @@ + (void)readAttributeRmsVoltageMaxPhaseBWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseB::TypeInfo; @@ -108444,9 +107532,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108456,14 +107543,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsCurrentPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108472,26 +107559,25 @@ - (void)subscribeAttributeRmsCurrentPhaseBWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108499,7 +107585,8 @@ + (void)readAttributeRmsCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseB::TypeInfo; @@ -108508,9 +107595,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108520,14 +107606,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsCurrentMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsCurrentMinPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108537,26 +107623,25 @@ - (void)subscribeAttributeRmsCurrentMinPhaseBWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsCurrentMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108565,7 +107650,8 @@ + (void)readAttributeRmsCurrentMinPhaseBWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseB::TypeInfo; @@ -108574,9 +107660,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108586,14 +107671,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsCurrentMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsCurrentMaxPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108603,26 +107688,25 @@ - (void)subscribeAttributeRmsCurrentMaxPhaseBWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsCurrentMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108631,7 +107715,8 @@ + (void)readAttributeRmsCurrentMaxPhaseBWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseB::TypeInfo; @@ -108640,9 +107725,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108652,14 +107736,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActivePowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActivePowerPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108668,26 +107752,25 @@ - (void)subscribeAttributeActivePowerPhaseBWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActivePowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108695,7 +107778,8 @@ + (void)readAttributeActivePowerPhaseBWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseB::TypeInfo; @@ -108704,9 +107788,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108716,14 +107799,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActivePowerMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActivePowerMinPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108733,26 +107816,25 @@ - (void)subscribeAttributeActivePowerMinPhaseBWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActivePowerMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108761,7 +107843,8 @@ + (void)readAttributeActivePowerMinPhaseBWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseB::TypeInfo; @@ -108770,9 +107853,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108782,14 +107864,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActivePowerMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActivePowerMaxPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108799,26 +107881,25 @@ - (void)subscribeAttributeActivePowerMaxPhaseBWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActivePowerMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108827,7 +107908,8 @@ + (void)readAttributeActivePowerMaxPhaseBWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseB::TypeInfo; @@ -108836,9 +107918,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108848,14 +107929,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeReactivePowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeReactivePowerPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108865,26 +107946,25 @@ - (void)subscribeAttributeReactivePowerPhaseBWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeReactivePowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108893,7 +107973,8 @@ + (void)readAttributeReactivePowerPhaseBWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseB::TypeInfo; @@ -108902,9 +107983,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108914,14 +107994,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeApparentPowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeApparentPowerPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108931,26 +108011,25 @@ - (void)subscribeAttributeApparentPowerPhaseBWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeApparentPowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -108959,7 +108038,8 @@ + (void)readAttributeApparentPowerPhaseBWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseB::TypeInfo; @@ -108968,9 +108048,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -108980,14 +108059,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePowerFactorPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePowerFactorPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -108996,26 +108075,25 @@ - (void)subscribeAttributePowerFactorPhaseBWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePowerFactorPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109023,7 +108101,8 @@ + (void)readAttributePowerFactorPhaseBWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseB::TypeInfo; @@ -109032,9 +108111,8 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109045,14 +108123,14 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109063,26 +108141,25 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithParams:(MT { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache: @@ -109092,7 +108169,8 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache: completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseB::TypeInfo; @@ -109101,9 +108179,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109114,14 +108191,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109132,26 +108209,25 @@ - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithParams:(MTRSubsc { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109160,7 +108236,8 @@ + (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:(MTRAt completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseB::TypeInfo; @@ -109169,9 +108246,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109182,14 +108258,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109200,26 +108276,25 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithParams:(MTRSubs { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109228,7 +108303,8 @@ + (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache:(MTRA completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseB::TypeInfo; @@ -109237,9 +108313,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109250,14 +108325,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109268,26 +108343,25 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams:(MTRSubscr { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109296,7 +108370,8 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:(MTRAtt completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseB::TypeInfo; @@ -109305,9 +108380,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109318,14 +108392,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109336,26 +108410,25 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams:(MTRSubsc { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109364,7 +108437,8 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:(MTRAt completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseB::TypeInfo; @@ -109373,9 +108447,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109386,14 +108459,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageSagPeriodPhaseBWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageSagPeriodPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109403,26 +108476,25 @@ - (void)subscribeAttributeRmsVoltageSagPeriodPhaseBWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109431,7 +108503,8 @@ + (void)readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseB::TypeInfo; @@ -109440,9 +108513,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109453,14 +108525,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageSwellPeriodPhaseBWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109470,26 +108542,25 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseBWithParams:(MTRSubscribePar { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseB::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109498,7 +108569,8 @@ + (void)readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache:(MTRAttribute completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseB::TypeInfo; @@ -109507,9 +108579,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109519,14 +108590,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeLineCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLineCurrentPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109535,26 +108606,25 @@ - (void)subscribeAttributeLineCurrentPhaseCWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLineCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109562,7 +108632,8 @@ + (void)readAttributeLineCurrentPhaseCWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseC::TypeInfo; @@ -109571,9 +108642,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109583,14 +108653,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActiveCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActiveCurrentPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109600,26 +108670,25 @@ - (void)subscribeAttributeActiveCurrentPhaseCWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109628,7 +108697,8 @@ + (void)readAttributeActiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseC::TypeInfo; @@ -109637,9 +108707,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109649,14 +108718,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeReactiveCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeReactiveCurrentPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109666,26 +108735,25 @@ - (void)subscribeAttributeReactiveCurrentPhaseCWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeReactiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109694,7 +108762,8 @@ + (void)readAttributeReactiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseC::TypeInfo; @@ -109703,9 +108772,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109715,14 +108783,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltagePhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltagePhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109731,26 +108799,25 @@ - (void)subscribeAttributeRmsVoltagePhaseCWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltagePhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109758,7 +108825,8 @@ + (void)readAttributeRmsVoltagePhaseCWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseC::TypeInfo; @@ -109767,9 +108835,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109779,14 +108846,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageMinPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109796,26 +108863,25 @@ - (void)subscribeAttributeRmsVoltageMinPhaseCWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109824,7 +108890,8 @@ + (void)readAttributeRmsVoltageMinPhaseCWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseC::TypeInfo; @@ -109833,9 +108900,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109845,14 +108911,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageMaxPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109862,26 +108928,25 @@ - (void)subscribeAttributeRmsVoltageMaxPhaseCWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109890,7 +108955,8 @@ + (void)readAttributeRmsVoltageMaxPhaseCWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseC::TypeInfo; @@ -109899,9 +108965,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109911,14 +108976,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsCurrentPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109927,26 +108992,25 @@ - (void)subscribeAttributeRmsCurrentPhaseCWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -109954,7 +109018,8 @@ + (void)readAttributeRmsCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseC::TypeInfo; @@ -109963,9 +109028,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -109975,14 +109039,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsCurrentMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsCurrentMinPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -109992,26 +109056,25 @@ - (void)subscribeAttributeRmsCurrentMinPhaseCWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsCurrentMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110020,7 +109083,8 @@ + (void)readAttributeRmsCurrentMinPhaseCWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseC::TypeInfo; @@ -110029,9 +109093,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110041,14 +109104,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsCurrentMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsCurrentMaxPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110058,26 +109121,25 @@ - (void)subscribeAttributeRmsCurrentMaxPhaseCWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsCurrentMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110086,7 +109148,8 @@ + (void)readAttributeRmsCurrentMaxPhaseCWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseC::TypeInfo; @@ -110095,9 +109158,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110107,14 +109169,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActivePowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActivePowerPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110123,26 +109185,25 @@ - (void)subscribeAttributeActivePowerPhaseCWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActivePowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110150,7 +109211,8 @@ + (void)readAttributeActivePowerPhaseCWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseC::TypeInfo; @@ -110159,9 +109221,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110171,14 +109232,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActivePowerMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActivePowerMinPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110188,26 +109249,25 @@ - (void)subscribeAttributeActivePowerMinPhaseCWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActivePowerMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110216,7 +109276,8 @@ + (void)readAttributeActivePowerMinPhaseCWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseC::TypeInfo; @@ -110225,9 +109286,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110237,14 +109297,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeActivePowerMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeActivePowerMaxPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110254,26 +109314,25 @@ - (void)subscribeAttributeActivePowerMaxPhaseCWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeActivePowerMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110282,7 +109341,8 @@ + (void)readAttributeActivePowerMaxPhaseCWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseC::TypeInfo; @@ -110291,9 +109351,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110303,14 +109362,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeReactivePowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeReactivePowerPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110320,26 +109379,25 @@ - (void)subscribeAttributeReactivePowerPhaseCWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeReactivePowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110348,7 +109406,8 @@ + (void)readAttributeReactivePowerPhaseCWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseC::TypeInfo; @@ -110357,9 +109416,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110369,14 +109427,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeApparentPowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeApparentPowerPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110386,26 +109444,25 @@ - (void)subscribeAttributeApparentPowerPhaseCWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeApparentPowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110414,7 +109471,8 @@ + (void)readAttributeApparentPowerPhaseCWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseC::TypeInfo; @@ -110423,9 +109481,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110435,14 +109492,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributePowerFactorPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributePowerFactorPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110451,26 +109508,25 @@ - (void)subscribeAttributePowerFactorPhaseCWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributePowerFactorPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110478,7 +109534,8 @@ + (void)readAttributePowerFactorPhaseCWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseC::TypeInfo; @@ -110487,9 +109544,8 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110500,14 +109556,14 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110518,26 +109574,25 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithParams:(MT { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache: @@ -110547,7 +109602,8 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache: completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseC::TypeInfo; @@ -110556,9 +109612,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110569,14 +109624,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110587,26 +109642,25 @@ - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithParams:(MTRSubsc { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110615,7 +109669,8 @@ + (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:(MTRAt completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseC::TypeInfo; @@ -110624,9 +109679,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110637,14 +109691,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110655,26 +109709,25 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithParams:(MTRSubs { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110683,7 +109736,8 @@ + (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache:(MTRA completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseC::TypeInfo; @@ -110692,9 +109746,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110705,14 +109758,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110723,26 +109776,25 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams:(MTRSubscr { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110751,7 +109803,8 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:(MTRAtt completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseC::TypeInfo; @@ -110760,9 +109813,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110773,14 +109825,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110791,26 +109843,25 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams:(MTRSubsc { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110819,7 +109870,8 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:(MTRAt completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseC::TypeInfo; @@ -110828,9 +109880,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110841,14 +109892,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageSagPeriodPhaseCWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageSagPeriodPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110858,26 +109909,25 @@ - (void)subscribeAttributeRmsVoltageSagPeriodPhaseCWithParams:(MTRSubscribeParam { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110886,7 +109936,8 @@ + (void)readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache:(MTRAttributeCa completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseC::TypeInfo; @@ -110895,9 +109946,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110908,14 +109958,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRmsVoltageSwellPeriodPhaseCWithCompletion:(void (^)( NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110925,26 +109975,25 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseCWithParams:(MTRSubscribePar { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseC::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -110953,7 +110002,8 @@ + (void)readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache:(MTRAttribute completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseC::TypeInfo; @@ -110962,9 +110012,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -110974,14 +110023,15 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ElectricalMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -110991,28 +110041,28 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ElectricalMeasurement::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ElectricalMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ElectricalMeasurement::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -111021,8 +110071,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ElectricalMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::GeneratedCommandList::TypeInfo; @@ -111031,9 +110082,8 @@ new MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -111043,14 +110093,15 @@ new MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ElectricalMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -111060,28 +110111,28 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ElectricalMeasurement::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ElectricalMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ElectricalMeasurement::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -111090,8 +110141,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ElectricalMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AcceptedCommandList::TypeInfo; @@ -111100,9 +110152,8 @@ new MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -111112,14 +110163,15 @@ new MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ElectricalMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -111128,27 +110180,28 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = ElectricalMeasurement::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ElectricalMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = ElectricalMeasurement::Attributes::AttributeList::TypeInfo; - chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -111156,8 +110209,9 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRElectricalMeasurementAttributeListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(ElectricalMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::AttributeList::TypeInfo; @@ -111166,9 +110220,8 @@ new MTRElectricalMeasurementAttributeListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -111178,14 +110231,14 @@ new MTRElectricalMeasurementAttributeListListAttributeCallbackBridge( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -111194,26 +110247,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -111221,7 +110273,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::FeatureMap::TypeInfo; @@ -111230,9 +110283,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -111242,14 +110294,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = ElectricalMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -111258,26 +110310,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ElectricalMeasurement::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -111285,7 +110336,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ElectricalMeasurement::Attributes::ClusterRevision::TypeInfo; @@ -111294,9 +110346,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -116159,12 +115210,13 @@ - (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params compl { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::Test::Type request; @@ -116174,11 +115226,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testNotHandledWithCompletion:(MTRStatusCompletion)completion @@ -116190,12 +115241,13 @@ - (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _N { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestNotHandled::Type request; @@ -116205,11 +115257,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testSpecificWithCompletion:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data, @@ -116223,8 +115274,10 @@ - (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nulla { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterTestSpecificResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestSpecificResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestSpecificResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestSpecific::Type request; @@ -116234,11 +115287,10 @@ new MTRTestClusterClusterTestSpecificResponseCallbackBridge(self.callbackQueue, } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testUnknownCommandWithCompletion:(MTRStatusCompletion)completion @@ -116250,12 +115302,13 @@ - (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandPar { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestUnknownCommand::Type request; @@ -116265,11 +115318,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams *)params @@ -116278,8 +115330,10 @@ - (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestAddArgumentsResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestAddArguments::Type request; @@ -116291,11 +115345,10 @@ new MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(self.callbackQue request.arg1 = params.arg1.unsignedCharValue; request.arg2 = params.arg2.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params @@ -116304,8 +115357,10 @@ - (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgu { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestSimpleArgumentResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestSimpleArgumentRequest::Type request; @@ -116316,11 +115371,10 @@ new MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(self.callbackQ } request.arg1 = params.arg1.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params @@ -116330,8 +115384,10 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestStructArrayArgumentResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestStructArrayArgumentRequest::Type request; @@ -116551,11 +115607,10 @@ new MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(self.call request.arg5 = static_cast>(params.arg5.unsignedCharValue); request.arg6 = params.arg6.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params @@ -116564,8 +115619,9 @@ - (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgu { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestStructArgumentRequest::Type request; @@ -116583,11 +115639,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self. request.arg1.g = params.arg1.g.floatValue; request.arg1.h = params.arg1.h.doubleValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params @@ -116596,8 +115651,9 @@ - (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNest { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestNestedStructArgumentRequest::Type request; @@ -116617,11 +115673,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self. request.arg1.c.g = params.arg1.c.g.floatValue; request.arg1.c.h = params.arg1.c.h.doubleValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params @@ -116630,8 +115685,9 @@ - (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListSt { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestListStructArgumentRequest::Type request; @@ -116672,11 +115728,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self. } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params @@ -116685,8 +115740,9 @@ - (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestListInt8UArgumentRequest::Type request; @@ -116718,11 +115774,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self. } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params @@ -116731,8 +115786,9 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTest { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestNestedStructListArgumentRequest::Type request; @@ -116849,11 +115905,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self. } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testListNestedStructListArgumentRequestWithParams: @@ -116863,8 +115918,9 @@ - (void)testListNestedStructListArgumentRequestWithParams: { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestListNestedStructListArgumentRequest::Type request; @@ -117006,11 +116062,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, self. } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params @@ -117019,8 +116074,10 @@ - (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8 { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestListInt8UReverseResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestListInt8UReverseRequest::Type request; @@ -117052,11 +116109,10 @@ new MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(self.callbac } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params @@ -117065,8 +116121,9 @@ - (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterTestEnumsResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestEnumsResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestEnumsResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestEnumsRequest::Type request; @@ -117078,11 +116135,10 @@ new MTRTestClusterClusterTestEnumsResponseCallbackBridge(self.callbackQueue, sel request.arg1 = static_cast>(params.arg1.unsignedShortValue); request.arg2 = static_cast>(params.arg2.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params @@ -117091,8 +116147,10 @@ - (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullable { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestNullableOptionalRequest::Type request; @@ -117113,11 +116171,10 @@ new MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(self.callbac } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params @@ -117128,8 +116185,10 @@ - (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestC { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestComplexNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestComplexNullableOptionalRequest::Type request; @@ -117308,11 +116367,10 @@ new MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(self. } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params @@ -117321,8 +116379,10 @@ - (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEcho { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterSimpleStructResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterSimpleStructResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterSimpleStructResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::SimpleStructEchoRequest::Type request; @@ -117340,11 +116400,10 @@ new MTRTestClusterClusterSimpleStructResponseCallbackBridge(self.callbackQueue, request.arg1.g = params.arg1.g.floatValue; request.arg1.h = params.arg1.h.doubleValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)timedInvokeRequestWithCompletion:(MTRStatusCompletion)completion @@ -117356,12 +116415,13 @@ - (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestPar { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TimedInvokeRequest::Type request; @@ -117374,11 +116434,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(10000); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params @@ -117386,12 +116445,13 @@ - (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSi { // Make a copy of params before we go async. params = [params copy]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestSimpleOptionalArgumentRequest::Type request; @@ -117407,11 +116467,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params @@ -117420,8 +116479,10 @@ - (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEve { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestEmitTestEventResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestEmitTestEventRequest::Type request; @@ -117434,11 +116495,10 @@ new MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(self.callbackQu request.arg2 = static_cast>(params.arg2.unsignedCharValue); request.arg3 = params.arg3.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void) @@ -117450,8 +116510,10 @@ new MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(self.callbackQu { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestEmitTestFabricScopedEventResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestEmitTestFabricScopedEventRequest::Type request; @@ -117462,23 +116524,22 @@ new MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(sel } request.arg1 = params.arg1.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(self.device); } - (void)readAttributeBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Boolean::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBooleanWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -117493,12 +116554,13 @@ - (void)writeAttributeBooleanWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -117510,13 +116572,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Boolean::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBooleanWithParams:(MTRSubscribeParams * _Nonnull)params @@ -117525,26 +116585,25 @@ - (void)subscribeAttributeBooleanWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Boolean::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -117552,7 +116611,8 @@ + (void)readAttributeBooleanWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Boolean::TypeInfo; @@ -117561,9 +116621,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -117573,14 +116632,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeBitmap8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterBitmap8AttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterBitmap8AttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap8AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Bitmap8::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBitmap8WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -117595,12 +116654,13 @@ - (void)writeAttributeBitmap8WithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -117612,13 +116672,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Bitmap8::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBitmap8WithParams:(MTRSubscribeParams * _Nonnull)params @@ -117627,27 +116685,25 @@ - (void)subscribeAttributeBitmap8WithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::Bitmap8::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap8AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::Bitmap8::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -117655,7 +116711,8 @@ + (void)readAttributeBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterBitmap8AttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterBitmap8AttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterBitmap8AttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Bitmap8::TypeInfo; @@ -117664,9 +116721,8 @@ new MTRTestClusterBitmap8AttributeCallbackBridge(queue, completion, ^(Cancelable path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -117676,14 +116732,14 @@ new MTRTestClusterBitmap8AttributeCallbackBridge(queue, completion, ^(Cancelable - (void)readAttributeBitmap16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterBitmap16AttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterBitmap16AttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap16AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Bitmap16::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBitmap16WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -117698,12 +116754,13 @@ - (void)writeAttributeBitmap16WithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -117715,13 +116772,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Bitmap16::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedShortValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBitmap16WithParams:(MTRSubscribeParams * _Nonnull)params @@ -117730,27 +116785,25 @@ - (void)subscribeAttributeBitmap16WithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::Bitmap16::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap16AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::Bitmap16::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -117758,7 +116811,8 @@ + (void)readAttributeBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterBitmap16AttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterBitmap16AttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterBitmap16AttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Bitmap16::TypeInfo; @@ -117767,9 +116821,8 @@ new MTRTestClusterBitmap16AttributeCallbackBridge(queue, completion, ^(Cancelabl path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -117779,14 +116832,14 @@ new MTRTestClusterBitmap16AttributeCallbackBridge(queue, completion, ^(Cancelabl - (void)readAttributeBitmap32WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterBitmap32AttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterBitmap32AttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap32AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Bitmap32::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBitmap32WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -117801,12 +116854,13 @@ - (void)writeAttributeBitmap32WithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -117818,13 +116872,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Bitmap32::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedIntValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBitmap32WithParams:(MTRSubscribeParams * _Nonnull)params @@ -117833,27 +116885,25 @@ - (void)subscribeAttributeBitmap32WithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::Bitmap32::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap32AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::Bitmap32::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -117861,7 +116911,8 @@ + (void)readAttributeBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterBitmap32AttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterBitmap32AttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterBitmap32AttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Bitmap32::TypeInfo; @@ -117870,9 +116921,8 @@ new MTRTestClusterBitmap32AttributeCallbackBridge(queue, completion, ^(Cancelabl path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -117882,14 +116932,14 @@ new MTRTestClusterBitmap32AttributeCallbackBridge(queue, completion, ^(Cancelabl - (void)readAttributeBitmap64WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterBitmap64AttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterBitmap64AttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap64AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Bitmap64::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeBitmap64WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -117904,12 +116954,13 @@ - (void)writeAttributeBitmap64WithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -117921,13 +116972,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Bitmap64::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedLongLongValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeBitmap64WithParams:(MTRSubscribeParams * _Nonnull)params @@ -117936,27 +116985,25 @@ - (void)subscribeAttributeBitmap64WithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::Bitmap64::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap64AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::Bitmap64::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -117964,7 +117011,8 @@ + (void)readAttributeBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterBitmap64AttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterBitmap64AttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterBitmap64AttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Bitmap64::TypeInfo; @@ -117973,9 +117021,8 @@ new MTRTestClusterBitmap64AttributeCallbackBridge(queue, completion, ^(Cancelabl path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -117985,14 +117032,14 @@ new MTRTestClusterBitmap64AttributeCallbackBridge(queue, completion, ^(Cancelabl - (void)readAttributeInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt8uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -118007,12 +117054,13 @@ - (void)writeAttributeInt8uWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -118024,13 +117072,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int8u::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt8uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -118039,26 +117085,25 @@ - (void)subscribeAttributeInt8uWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -118066,7 +117111,8 @@ + (void)readAttributeInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int8u::TypeInfo; @@ -118075,9 +117121,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -118087,14 +117132,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeInt16uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int16u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt16uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -118109,12 +117154,13 @@ - (void)writeAttributeInt16uWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -118126,13 +117172,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int16u::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt16uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -118141,26 +117185,25 @@ - (void)subscribeAttributeInt16uWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int16u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -118168,7 +117211,8 @@ + (void)readAttributeInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int16u::TypeInfo; @@ -118177,9 +117221,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -118189,14 +117232,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt24uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int24u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt24uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -118211,12 +117254,13 @@ - (void)writeAttributeInt24uWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -118228,13 +117272,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int24u::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt24uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -118243,26 +117285,25 @@ - (void)subscribeAttributeInt24uWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int24u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -118270,7 +117311,8 @@ + (void)readAttributeInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int24u::TypeInfo; @@ -118279,9 +117321,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -118291,14 +117332,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt32uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int32u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt32uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -118313,12 +117354,13 @@ - (void)writeAttributeInt32uWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -118330,13 +117372,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int32u::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt32uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -118345,26 +117385,25 @@ - (void)subscribeAttributeInt32uWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int32u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -118372,7 +117411,8 @@ + (void)readAttributeInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int32u::TypeInfo; @@ -118381,9 +117421,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -118393,14 +117432,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt40uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int40u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt40uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -118415,12 +117454,13 @@ - (void)writeAttributeInt40uWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -118432,13 +117472,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int40u::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt40uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -118447,26 +117485,25 @@ - (void)subscribeAttributeInt40uWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int40u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -118474,7 +117511,8 @@ + (void)readAttributeInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int40u::TypeInfo; @@ -118483,9 +117521,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -118495,14 +117532,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt48uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int48u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt48uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -118517,12 +117554,13 @@ - (void)writeAttributeInt48uWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -118534,13 +117572,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int48u::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt48uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -118549,26 +117585,25 @@ - (void)subscribeAttributeInt48uWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int48u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -118576,7 +117611,8 @@ + (void)readAttributeInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int48u::TypeInfo; @@ -118585,9 +117621,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -118597,14 +117632,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt56uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int56u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt56uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -118619,12 +117654,13 @@ - (void)writeAttributeInt56uWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -118636,13 +117672,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int56u::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt56uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -118651,26 +117685,25 @@ - (void)subscribeAttributeInt56uWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int56u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -118678,7 +117711,8 @@ + (void)readAttributeInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int56u::TypeInfo; @@ -118687,9 +117721,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -118699,14 +117732,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt64uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int64u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt64uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -118721,12 +117754,13 @@ - (void)writeAttributeInt64uWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -118738,13 +117772,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int64u::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt64uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -118753,26 +117785,25 @@ - (void)subscribeAttributeInt64uWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int64u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -118780,7 +117811,8 @@ + (void)readAttributeInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int64u::TypeInfo; @@ -118789,9 +117821,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -118801,14 +117832,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt8sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int8s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt8sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -118823,12 +117854,13 @@ - (void)writeAttributeInt8sWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -118840,13 +117872,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int8s::TypeInfo; TypeInfo::Type cppValue; cppValue = value.charValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt8sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -118855,26 +117885,25 @@ - (void)subscribeAttributeInt8sWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int8s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -118882,7 +117911,8 @@ + (void)readAttributeInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int8s::TypeInfo; @@ -118891,9 +117921,8 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -118903,14 +117932,14 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeInt16sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int16s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt16sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -118925,12 +117954,13 @@ - (void)writeAttributeInt16sWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -118942,13 +117972,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int16s::TypeInfo; TypeInfo::Type cppValue; cppValue = value.shortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt16sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -118957,26 +117985,25 @@ - (void)subscribeAttributeInt16sWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int16s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -118984,7 +118011,8 @@ + (void)readAttributeInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int16s::TypeInfo; @@ -118993,9 +118021,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -119005,14 +118032,14 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt24sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int24s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt24sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -119027,12 +118054,13 @@ - (void)writeAttributeInt24sWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -119044,13 +118072,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int24s::TypeInfo; TypeInfo::Type cppValue; cppValue = value.intValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt24sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -119059,26 +118085,25 @@ - (void)subscribeAttributeInt24sWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int24s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -119086,7 +118111,8 @@ + (void)readAttributeInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int24s::TypeInfo; @@ -119095,9 +118121,8 @@ new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -119107,14 +118132,14 @@ new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt32sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int32s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt32sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -119129,12 +118154,13 @@ - (void)writeAttributeInt32sWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -119146,13 +118172,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int32s::TypeInfo; TypeInfo::Type cppValue; cppValue = value.intValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt32sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -119161,26 +118185,25 @@ - (void)subscribeAttributeInt32sWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int32s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -119188,7 +118211,8 @@ + (void)readAttributeInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int32s::TypeInfo; @@ -119197,9 +118221,8 @@ new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -119209,14 +118232,14 @@ new MTRInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt40sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int40s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt40sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -119231,12 +118254,13 @@ - (void)writeAttributeInt40sWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -119248,13 +118272,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int40s::TypeInfo; TypeInfo::Type cppValue; cppValue = value.longLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt40sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -119263,26 +118285,25 @@ - (void)subscribeAttributeInt40sWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int40s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -119290,7 +118311,8 @@ + (void)readAttributeInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int40s::TypeInfo; @@ -119299,9 +118321,8 @@ new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -119311,14 +118332,14 @@ new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt48sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int48s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt48sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -119333,12 +118354,13 @@ - (void)writeAttributeInt48sWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -119350,13 +118372,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int48s::TypeInfo; TypeInfo::Type cppValue; cppValue = value.longLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt48sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -119365,26 +118385,25 @@ - (void)subscribeAttributeInt48sWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int48s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -119392,7 +118411,8 @@ + (void)readAttributeInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int48s::TypeInfo; @@ -119401,9 +118421,8 @@ new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -119413,14 +118432,14 @@ new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt56sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int56s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt56sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -119435,12 +118454,13 @@ - (void)writeAttributeInt56sWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -119452,13 +118472,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int56s::TypeInfo; TypeInfo::Type cppValue; cppValue = value.longLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt56sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -119467,26 +118485,25 @@ - (void)subscribeAttributeInt56sWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int56s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -119494,7 +118511,8 @@ + (void)readAttributeInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int56s::TypeInfo; @@ -119503,9 +118521,8 @@ new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -119515,14 +118532,14 @@ new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeInt64sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Int64s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeInt64sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -119537,12 +118554,13 @@ - (void)writeAttributeInt64sWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -119554,13 +118572,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Int64s::TypeInfo; TypeInfo::Type cppValue; cppValue = value.longLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeInt64sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -119569,26 +118585,25 @@ - (void)subscribeAttributeInt64sWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Int64s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -119596,7 +118611,8 @@ + (void)readAttributeInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Int64s::TypeInfo; @@ -119605,9 +118621,8 @@ new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -119617,14 +118632,14 @@ new MTRInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeEnum8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Enum8::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeEnum8WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -119639,12 +118654,13 @@ - (void)writeAttributeEnum8WithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -119656,13 +118672,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Enum8::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEnum8WithParams:(MTRSubscribeParams * _Nonnull)params @@ -119671,26 +118685,25 @@ - (void)subscribeAttributeEnum8WithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Enum8::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -119698,7 +118711,8 @@ + (void)readAttributeEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Enum8::TypeInfo; @@ -119707,9 +118721,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -119719,14 +118732,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeEnum16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Enum16::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeEnum16WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -119741,12 +118754,13 @@ - (void)writeAttributeEnum16WithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -119758,13 +118772,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Enum16::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEnum16WithParams:(MTRSubscribeParams * _Nonnull)params @@ -119773,26 +118785,25 @@ - (void)subscribeAttributeEnum16WithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Enum16::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -119800,7 +118811,8 @@ + (void)readAttributeEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Enum16::TypeInfo; @@ -119809,9 +118821,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -119821,14 +118832,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeFloatSingleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRFloatAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFloatAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FloatAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::FloatSingle::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeFloatSingleWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -119843,12 +118854,13 @@ - (void)writeAttributeFloatSingleWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -119860,13 +118872,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::FloatSingle::TypeInfo; TypeInfo::Type cppValue; cppValue = value.floatValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFloatSingleWithParams:(MTRSubscribeParams * _Nonnull)params @@ -119875,26 +118885,25 @@ - (void)subscribeAttributeFloatSingleWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRFloatAttributeCallbackSubscriptionBridge * callbackBridge = new MTRFloatAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFloatAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, FloatAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::FloatSingle::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRFloatAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -119902,7 +118911,8 @@ + (void)readAttributeFloatSingleWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRFloatAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRFloatAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(FloatAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::FloatSingle::TypeInfo; @@ -119911,9 +118921,8 @@ new MTRFloatAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -119923,14 +118932,14 @@ new MTRFloatAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeFloatDoubleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoubleAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoubleAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoubleAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::FloatDouble::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeFloatDoubleWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -119945,12 +118954,13 @@ - (void)writeAttributeFloatDoubleWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -119962,13 +118972,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::FloatDouble::TypeInfo; TypeInfo::Type cppValue; cppValue = value.doubleValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFloatDoubleWithParams:(MTRSubscribeParams * _Nonnull)params @@ -119977,26 +118985,25 @@ - (void)subscribeAttributeFloatDoubleWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRDoubleAttributeCallbackSubscriptionBridge * callbackBridge = new MTRDoubleAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoubleAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoubleAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::FloatDouble::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRDoubleAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -120004,7 +119011,8 @@ + (void)readAttributeFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRDoubleAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoubleAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(DoubleAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::FloatDouble::TypeInfo; @@ -120013,9 +119021,8 @@ new MTRDoubleAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -120025,14 +119032,14 @@ new MTRDoubleAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeOctetStringWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTROctetStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROctetStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, OctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::OctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeOctetStringWithValue:(NSData * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -120047,12 +119054,13 @@ - (void)writeAttributeOctetStringWithValue:(NSData * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -120064,13 +119072,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::OctetString::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asByteSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeOctetStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -120079,27 +119085,25 @@ - (void)subscribeAttributeOctetStringWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTROctetStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROctetStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::OctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROctetStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, OctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::OctetString::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROctetStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -120107,7 +119111,8 @@ + (void)readAttributeOctetStringWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTROctetStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROctetStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(OctetStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::OctetString::TypeInfo; @@ -120116,9 +119121,8 @@ new MTROctetStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -120128,14 +119132,14 @@ new MTROctetStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succ - (void)readAttributeListInt8uWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterListInt8uListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterListInt8uListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterListInt8uListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::ListInt8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeListInt8uWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -120150,12 +119154,13 @@ - (void)writeAttributeListInt8uWithValue:(NSArray * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -120188,13 +119193,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeListInt8uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -120203,27 +119206,26 @@ - (void)subscribeAttributeListInt8uWithParams:(MTRSubscribeParams * _Nonnull)par { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::ListInt8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterListInt8uListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::ListInt8u::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeListInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -120231,7 +119233,8 @@ + (void)readAttributeListInt8uWithAttributeCache:(MTRAttributeCacheContainer *)a queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterListInt8uListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterListInt8uListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterListInt8uListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::ListInt8u::TypeInfo; @@ -120240,9 +119243,8 @@ new MTRTestClusterListInt8uListAttributeCallbackBridge(queue, completion, ^(Canc path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -120252,14 +119254,14 @@ new MTRTestClusterListInt8uListAttributeCallbackBridge(queue, completion, ^(Canc - (void)readAttributeListOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterListOctetStringListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterListOctetStringListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::ListOctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeListOctetStringWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -120274,12 +119276,13 @@ - (void)writeAttributeListOctetStringWithValue:(NSArray * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -120312,13 +119315,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeListOctetStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -120327,27 +119328,26 @@ - (void)subscribeAttributeListOctetStringWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::ListOctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::ListOctetString::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeListOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -120355,35 +119355,37 @@ + (void)readAttributeListOctetStringWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterListOctetStringListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = TestCluster::Attributes::ListOctetString::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRTestClusterListOctetStringListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TestClusterListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = TestCluster::Attributes::ListOctetString::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeListStructOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterListStructOctetStringListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterListStructOctetStringListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::ListStructOctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeListStructOctetStringWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -120398,12 +119400,13 @@ - (void)writeAttributeListStructOctetStringWithValue:(NSArray * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -120437,13 +119440,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeListStructOctetStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -120453,27 +119454,27 @@ - (void)subscribeAttributeListStructOctetStringWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::ListStructOctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::ListStructOctetString::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeListStructOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -120482,8 +119483,9 @@ + (void)readAttributeListStructOctetStringWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterListStructOctetStringListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterListStructOctetStringListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TestClusterListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::ListStructOctetString::TypeInfo; @@ -120492,9 +119494,8 @@ new MTRTestClusterListStructOctetStringListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -120504,14 +119505,14 @@ new MTRTestClusterListStructOctetStringListAttributeCallbackBridge( - (void)readAttributeLongOctetStringWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTROctetStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROctetStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, OctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::LongOctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLongOctetStringWithValue:(NSData * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -120526,12 +119527,13 @@ - (void)writeAttributeLongOctetStringWithValue:(NSData * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -120543,13 +119545,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::LongOctetString::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asByteSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLongOctetStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -120558,27 +119558,25 @@ - (void)subscribeAttributeLongOctetStringWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTROctetStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTROctetStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::LongOctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTROctetStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, OctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::LongOctetString::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTROctetStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTROctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTROctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLongOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -120586,7 +119584,8 @@ + (void)readAttributeLongOctetStringWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTROctetStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROctetStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(OctetStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::LongOctetString::TypeInfo; @@ -120595,9 +119594,8 @@ new MTROctetStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succ path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -120607,14 +119605,14 @@ new MTROctetStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succ - (void)readAttributeCharStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::CharString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeCharStringWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -120629,12 +119627,13 @@ - (void)writeAttributeCharStringWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -120646,13 +119645,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::CharString::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeCharStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -120661,27 +119658,25 @@ - (void)subscribeAttributeCharStringWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::CharString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::CharString::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -120689,7 +119684,8 @@ + (void)readAttributeCharStringWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::CharString::TypeInfo; @@ -120698,9 +119694,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -120710,14 +119705,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeLongCharStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::LongCharString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeLongCharStringWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -120732,12 +119727,13 @@ - (void)writeAttributeLongCharStringWithValue:(NSString * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -120749,13 +119745,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::LongCharString::TypeInfo; TypeInfo::Type cppValue; cppValue = [self asCharSpan:value]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeLongCharStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -120764,27 +119758,25 @@ - (void)subscribeAttributeLongCharStringWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::LongCharString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::LongCharString::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeLongCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -120792,7 +119784,8 @@ + (void)readAttributeLongCharStringWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::LongCharString::TypeInfo; @@ -120801,9 +119794,8 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -120813,14 +119805,14 @@ new MTRCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * succe - (void)readAttributeEpochUsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::EpochUs::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeEpochUsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -120835,12 +119827,13 @@ - (void)writeAttributeEpochUsWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -120852,13 +119845,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::EpochUs::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEpochUsWithParams:(MTRSubscribeParams * _Nonnull)params @@ -120867,26 +119858,25 @@ - (void)subscribeAttributeEpochUsWithParams:(MTRSubscribeParams * _Nonnull)param { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt64uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::EpochUs::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEpochUsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -120894,7 +119884,8 @@ + (void)readAttributeEpochUsWithAttributeCache:(MTRAttributeCacheContainer *)att queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::EpochUs::TypeInfo; @@ -120903,9 +119894,8 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -120915,14 +119905,14 @@ new MTRInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeEpochSWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::EpochS::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeEpochSWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -120937,12 +119927,13 @@ - (void)writeAttributeEpochSWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -120954,13 +119945,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::EpochS::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEpochSWithParams:(MTRSubscribeParams * _Nonnull)params @@ -120969,26 +119958,25 @@ - (void)subscribeAttributeEpochSWithParams:(MTRSubscribeParams * _Nonnull)params { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::EpochS::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEpochSWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -120996,7 +119984,8 @@ + (void)readAttributeEpochSWithAttributeCache:(MTRAttributeCacheContainer *)attr queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::EpochS::TypeInfo; @@ -121005,9 +119994,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -121017,14 +120005,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeVendorIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::VendorId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeVendorIdWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -121039,12 +120027,13 @@ - (void)writeAttributeVendorIdWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -121056,13 +120045,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::VendorId::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedShortValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeVendorIdWithParams:(MTRSubscribeParams * _Nonnull)params @@ -121071,26 +120058,25 @@ - (void)subscribeAttributeVendorIdWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRVendorIdAttributeCallbackSubscriptionBridge * callbackBridge = new MTRVendorIdAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::VendorId::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRVendorIdAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -121098,7 +120084,8 @@ + (void)readAttributeVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRVendorIdAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(VendorIdAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::VendorId::TypeInfo; @@ -121107,9 +120094,8 @@ new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -121120,14 +120106,15 @@ new MTRVendorIdAttributeCallbackBridge(queue, completion, ^(Cancelable * success - (void)readAttributeListNullablesAndOptionalsStructWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::ListNullablesAndOptionalsStruct::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeListNullablesAndOptionalsStructWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -121142,12 +120129,13 @@ - (void)writeAttributeListNullablesAndOptionalsStructWithValue:(NSArray * _Nonnu params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -121352,13 +120340,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeListNullablesAndOptionalsStructWithParams:(MTRSubscribeParams * _Nonnull)params @@ -121369,28 +120355,28 @@ - (void)subscribeAttributeListNullablesAndOptionalsStructWithParams:(MTRSubscrib { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::ListNullablesAndOptionalsStruct::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge + = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::ListNullablesAndOptionalsStruct::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge * innerCallbackBridge - = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, - nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeListNullablesAndOptionalsStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -121399,8 +120385,9 @@ + (void)readAttributeListNullablesAndOptionalsStructWithAttributeCache:(MTRAttri completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TestClusterListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::ListNullablesAndOptionalsStruct::TypeInfo; @@ -121409,9 +120396,8 @@ new MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -121421,14 +120407,14 @@ new MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge( - (void)readAttributeEnumAttrWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterSimpleEnumAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::EnumAttr::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeEnumAttrWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -121443,12 +120429,13 @@ - (void)writeAttributeEnumAttrWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -121460,13 +120447,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::EnumAttr::TypeInfo; TypeInfo::Type cppValue; cppValue = static_cast>(value.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeEnumAttrWithParams:(MTRSubscribeParams * _Nonnull)params @@ -121475,27 +120460,26 @@ - (void)subscribeAttributeEnumAttrWithParams:(MTRSubscribeParams * _Nonnull)para { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::EnumAttr::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterSimpleEnumAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::EnumAttr::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -121503,7 +120487,8 @@ + (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)at queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::EnumAttr::TypeInfo; @@ -121512,9 +120497,8 @@ new MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, completion, ^( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -121525,14 +120509,14 @@ new MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, completion, ^( - (void)readAttributeStructAttrWithCompletion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterStructAttrStructAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterStructAttrStructAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterStructAttrStructAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::StructAttr::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value @@ -121548,12 +120532,13 @@ - (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _ params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -121572,13 +120557,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue.f = static_cast>(value.f.unsignedCharValue); cppValue.g = value.g.floatValue; cppValue.h = value.h.doubleValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeStructAttrWithParams:(MTRSubscribeParams * _Nonnull)params @@ -121588,27 +120571,26 @@ - (void)subscribeAttributeStructAttrWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::StructAttr::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterStructAttrStructAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::StructAttr::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -121617,7 +120599,8 @@ + (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *) completion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterStructAttrStructAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterStructAttrStructAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterStructAttrStructAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::StructAttr::TypeInfo; @@ -121626,9 +120609,8 @@ new MTRTestClusterStructAttrStructAttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -121638,14 +120620,14 @@ new MTRTestClusterStructAttrStructAttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeRangeRestrictedInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeRangeRestrictedInt8uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -121660,12 +120642,13 @@ - (void)writeAttributeRangeRestrictedInt8uWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -121677,13 +120660,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8u::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRangeRestrictedInt8uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -121693,26 +120674,25 @@ - (void)subscribeAttributeRangeRestrictedInt8uWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -121721,7 +120701,8 @@ + (void)readAttributeRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8u::TypeInfo; @@ -121730,9 +120711,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -121742,14 +120722,14 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeRangeRestrictedInt8sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeRangeRestrictedInt8sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -121764,12 +120744,13 @@ - (void)writeAttributeRangeRestrictedInt8sWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -121781,13 +120762,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8s::TypeInfo; TypeInfo::Type cppValue; cppValue = value.charValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRangeRestrictedInt8sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -121797,26 +120776,25 @@ - (void)subscribeAttributeRangeRestrictedInt8sWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -121825,7 +120803,8 @@ + (void)readAttributeRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8s::TypeInfo; @@ -121834,9 +120813,8 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -121846,14 +120824,14 @@ new MTRInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeRangeRestrictedInt16uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeRangeRestrictedInt16uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -121868,12 +120846,13 @@ - (void)writeAttributeRangeRestrictedInt16uWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -121885,13 +120864,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16u::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRangeRestrictedInt16uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -121901,26 +120878,25 @@ - (void)subscribeAttributeRangeRestrictedInt16uWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -121929,7 +120905,8 @@ + (void)readAttributeRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16u::TypeInfo; @@ -121938,9 +120915,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -121950,14 +120926,14 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeRangeRestrictedInt16sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeRangeRestrictedInt16sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -121972,12 +120948,13 @@ - (void)writeAttributeRangeRestrictedInt16sWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -121989,13 +120966,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16s::TypeInfo; TypeInfo::Type cppValue; cppValue = value.shortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeRangeRestrictedInt16sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -122005,26 +120980,25 @@ - (void)subscribeAttributeRangeRestrictedInt16sWithParams:(MTRSubscribeParams * { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16sAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -122033,7 +121007,8 @@ + (void)readAttributeRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheC completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16s::TypeInfo; @@ -122042,9 +121017,8 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -122054,14 +121028,15 @@ new MTRInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeListLongOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterListLongOctetStringListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterListLongOctetStringListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::ListLongOctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeListLongOctetStringWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -122076,12 +121051,13 @@ - (void)writeAttributeListLongOctetStringWithValue:(NSArray * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -122114,13 +121090,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeListLongOctetStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -122130,27 +121104,27 @@ - (void)subscribeAttributeListLongOctetStringWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::ListLongOctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::ListLongOctetString::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeListLongOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -122159,8 +121133,9 @@ + (void)readAttributeListLongOctetStringWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterListLongOctetStringListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterListLongOctetStringListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TestClusterListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::ListLongOctetString::TypeInfo; @@ -122169,9 +121144,8 @@ new MTRTestClusterListLongOctetStringListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -122183,15 +121157,15 @@ - (void)readAttributeListFabricScopedWithParams:(MTRReadParams * _Nullable)param completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { // Make a copy of params before we go async. params = [params copy]; - new MTRTestClusterListFabricScopedListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterListFabricScopedListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::ListFabricScoped::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute( - successFn->mContext, successFn->mCall, failureFn->mCall, params.filterByFabric); + return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeListFabricScopedWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -122206,12 +121180,13 @@ - (void)writeAttributeListFabricScopedWithValue:(NSArray * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -122300,13 +121275,11 @@ new MTRDefaultSuccessCallbackBridge( cppValue = ListType_0(); } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeListFabricScopedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -122315,27 +121288,27 @@ - (void)subscribeAttributeListFabricScopedWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::ListFabricScoped::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::ListFabricScoped::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeListFabricScopedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -122343,35 +121316,36 @@ + (void)readAttributeListFabricScopedWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterListFabricScopedListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = TestCluster::Attributes::ListFabricScoped::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRTestClusterListFabricScopedListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TestClusterListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = TestCluster::Attributes::ListFabricScoped::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeTimedWriteBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::TimedWriteBoolean::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeTimedWriteBooleanWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -122386,12 +121360,13 @@ - (void)writeAttributeTimedWriteBooleanWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -122403,13 +121378,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::TimedWriteBoolean::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeTimedWriteBooleanWithParams:(MTRSubscribeParams * _Nonnull)params @@ -122418,26 +121391,25 @@ - (void)subscribeAttributeTimedWriteBooleanWithParams:(MTRSubscribeParams * _Non { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::TimedWriteBoolean::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeTimedWriteBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -122445,7 +121417,8 @@ + (void)readAttributeTimedWriteBooleanWithAttributeCache:(MTRAttributeCacheConta queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::TimedWriteBoolean::TypeInfo; @@ -122454,9 +121427,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -122466,14 +121438,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeGeneralErrorBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::GeneralErrorBoolean::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeGeneralErrorBooleanWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -122488,12 +121460,13 @@ - (void)writeAttributeGeneralErrorBooleanWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -122505,13 +121478,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::GeneralErrorBoolean::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneralErrorBooleanWithParams:(MTRSubscribeParams * _Nonnull)params @@ -122521,26 +121492,25 @@ - (void)subscribeAttributeGeneralErrorBooleanWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::GeneralErrorBoolean::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneralErrorBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -122549,7 +121519,8 @@ + (void)readAttributeGeneralErrorBooleanWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::GeneralErrorBoolean::TypeInfo; @@ -122558,9 +121529,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -122570,14 +121540,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterErrorBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::ClusterErrorBoolean::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeClusterErrorBooleanWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -122592,12 +121562,13 @@ - (void)writeAttributeClusterErrorBooleanWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -122609,13 +121580,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::ClusterErrorBoolean::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterErrorBooleanWithParams:(MTRSubscribeParams * _Nonnull)params @@ -122625,26 +121594,25 @@ - (void)subscribeAttributeClusterErrorBooleanWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::ClusterErrorBoolean::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterErrorBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -122653,7 +121621,8 @@ + (void)readAttributeClusterErrorBooleanWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::ClusterErrorBoolean::TypeInfo; @@ -122662,9 +121631,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -122674,14 +121642,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeUnsupportedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::Unsupported::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeUnsupportedWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -122696,12 +121664,13 @@ - (void)writeAttributeUnsupportedWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -122713,13 +121682,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::Unsupported::TypeInfo; TypeInfo::Type cppValue; cppValue = value.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeUnsupportedWithParams:(MTRSubscribeParams * _Nonnull)params @@ -122728,26 +121695,25 @@ - (void)subscribeAttributeUnsupportedWithParams:(MTRSubscribeParams * _Nonnull)p { // Make a copy of params before we go async. params = [params copy]; - __block MTRBooleanAttributeCallbackSubscriptionBridge * callbackBridge = new MTRBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::Unsupported::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeUnsupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -122755,7 +121721,8 @@ + (void)readAttributeUnsupportedWithAttributeCache:(MTRAttributeCacheContainer * queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::Unsupported::TypeInfo; @@ -122764,9 +121731,8 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -122776,14 +121742,14 @@ new MTRBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeNullableBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableBooleanAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableBoolean::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableBooleanWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -122798,12 +121764,13 @@ - (void)writeAttributeNullableBooleanWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -122820,13 +121787,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.boolValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableBooleanWithParams:(MTRSubscribeParams * _Nonnull)params @@ -122835,27 +121800,25 @@ - (void)subscribeAttributeNullableBooleanWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableBooleanAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableBooleanAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableBoolean::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableBooleanAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableBoolean::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableBooleanAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -122863,7 +121826,8 @@ + (void)readAttributeNullableBooleanWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableBooleanAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableBoolean::TypeInfo; @@ -122872,9 +121836,8 @@ new MTRNullableBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -122884,14 +121847,14 @@ new MTRNullableBooleanAttributeCallbackBridge(queue, completion, ^(Cancelable * - (void)readAttributeNullableBitmap8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterNullableBitmap8AttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterNullableBitmap8AttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap8AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableBitmap8::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableBitmap8WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -122906,12 +121869,13 @@ - (void)writeAttributeNullableBitmap8WithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -122928,13 +121892,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = static_cast>(value.unsignedCharValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableBitmap8WithParams:(MTRSubscribeParams * _Nonnull)params @@ -122943,27 +121905,26 @@ - (void)subscribeAttributeNullableBitmap8WithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableBitmap8::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap8AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableBitmap8::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -122971,7 +121932,8 @@ + (void)readAttributeNullableBitmap8WithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterNullableBitmap8AttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterNullableBitmap8AttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterNullableBitmap8AttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableBitmap8::TypeInfo; @@ -122980,9 +121942,8 @@ new MTRTestClusterNullableBitmap8AttributeCallbackBridge(queue, completion, ^(Ca path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -122992,14 +121953,14 @@ new MTRTestClusterNullableBitmap8AttributeCallbackBridge(queue, completion, ^(Ca - (void)readAttributeNullableBitmap16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterNullableBitmap16AttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterNullableBitmap16AttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap16AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableBitmap16::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableBitmap16WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -123014,12 +121975,13 @@ - (void)writeAttributeNullableBitmap16WithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -123036,13 +121998,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = static_cast>(value.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableBitmap16WithParams:(MTRSubscribeParams * _Nonnull)params @@ -123051,27 +122011,26 @@ - (void)subscribeAttributeNullableBitmap16WithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableBitmap16::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap16AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableBitmap16::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -123079,7 +122038,8 @@ + (void)readAttributeNullableBitmap16WithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterNullableBitmap16AttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterNullableBitmap16AttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterNullableBitmap16AttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableBitmap16::TypeInfo; @@ -123088,9 +122048,8 @@ new MTRTestClusterNullableBitmap16AttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -123100,14 +122059,14 @@ new MTRTestClusterNullableBitmap16AttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeNullableBitmap32WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterNullableBitmap32AttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterNullableBitmap32AttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap32AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableBitmap32::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableBitmap32WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -123122,12 +122081,13 @@ - (void)writeAttributeNullableBitmap32WithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -123144,13 +122104,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = static_cast>(value.unsignedIntValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableBitmap32WithParams:(MTRSubscribeParams * _Nonnull)params @@ -123159,27 +122117,26 @@ - (void)subscribeAttributeNullableBitmap32WithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableBitmap32::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap32AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableBitmap32::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -123187,7 +122144,8 @@ + (void)readAttributeNullableBitmap32WithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterNullableBitmap32AttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterNullableBitmap32AttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterNullableBitmap32AttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableBitmap32::TypeInfo; @@ -123196,9 +122154,8 @@ new MTRTestClusterNullableBitmap32AttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -123208,14 +122165,14 @@ new MTRTestClusterNullableBitmap32AttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeNullableBitmap64WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterNullableBitmap64AttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterNullableBitmap64AttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap64AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableBitmap64::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableBitmap64WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -123230,12 +122187,13 @@ - (void)writeAttributeNullableBitmap64WithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -123252,13 +122210,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = static_cast>(value.unsignedLongLongValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableBitmap64WithParams:(MTRSubscribeParams * _Nonnull)params @@ -123267,27 +122223,26 @@ - (void)subscribeAttributeNullableBitmap64WithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableBitmap64::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap64AttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableBitmap64::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -123295,7 +122250,8 @@ + (void)readAttributeNullableBitmap64WithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterNullableBitmap64AttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterNullableBitmap64AttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterNullableBitmap64AttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableBitmap64::TypeInfo; @@ -123304,9 +122260,8 @@ new MTRTestClusterNullableBitmap64AttributeCallbackBridge(queue, completion, ^(C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -123316,14 +122271,14 @@ new MTRTestClusterNullableBitmap64AttributeCallbackBridge(queue, completion, ^(C - (void)readAttributeNullableInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt8uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -123338,12 +122293,13 @@ - (void)writeAttributeNullableInt8uWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -123360,13 +122316,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt8uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -123375,27 +122329,25 @@ - (void)subscribeAttributeNullableInt8uWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt8u::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -123403,7 +122355,8 @@ + (void)readAttributeNullableInt8uWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt8u::TypeInfo; @@ -123412,9 +122365,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -123424,14 +122376,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeNullableInt16uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt16u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt16uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -123446,12 +122398,13 @@ - (void)writeAttributeNullableInt16uWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -123468,13 +122421,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedShortValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt16uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -123483,27 +122434,25 @@ - (void)subscribeAttributeNullableInt16uWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt16u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt16u::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -123511,7 +122460,8 @@ + (void)readAttributeNullableInt16uWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt16u::TypeInfo; @@ -123520,9 +122470,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -123532,14 +122481,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt24uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt24u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt24uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -123554,12 +122503,13 @@ - (void)writeAttributeNullableInt24uWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -123576,13 +122526,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt24uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -123591,27 +122539,25 @@ - (void)subscribeAttributeNullableInt24uWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt24u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt24u::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -123619,7 +122565,8 @@ + (void)readAttributeNullableInt24uWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt24u::TypeInfo; @@ -123628,9 +122575,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -123640,14 +122586,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt32uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt32u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt32uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -123662,12 +122608,13 @@ - (void)writeAttributeNullableInt32uWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -123684,13 +122631,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt32uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -123699,27 +122644,25 @@ - (void)subscribeAttributeNullableInt32uWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt32u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt32u::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -123727,7 +122670,8 @@ + (void)readAttributeNullableInt32uWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt32u::TypeInfo; @@ -123736,9 +122680,8 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -123748,14 +122691,14 @@ new MTRNullableInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt40uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt40u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt40uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -123770,12 +122713,13 @@ - (void)writeAttributeNullableInt40uWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -123792,13 +122736,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt40uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -123807,27 +122749,25 @@ - (void)subscribeAttributeNullableInt40uWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt40u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt40u::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -123835,7 +122775,8 @@ + (void)readAttributeNullableInt40uWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt40u::TypeInfo; @@ -123844,9 +122785,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -123856,14 +122796,14 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt48uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt48u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt48uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -123878,12 +122818,13 @@ - (void)writeAttributeNullableInt48uWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -123900,13 +122841,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt48uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -123915,27 +122854,25 @@ - (void)subscribeAttributeNullableInt48uWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt48u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt48u::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -123943,7 +122880,8 @@ + (void)readAttributeNullableInt48uWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt48u::TypeInfo; @@ -123952,9 +122890,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -123964,14 +122901,14 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt56uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt56u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt56uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -123986,12 +122923,13 @@ - (void)writeAttributeNullableInt56uWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -124008,13 +122946,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt56uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -124023,27 +122959,25 @@ - (void)subscribeAttributeNullableInt56uWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt56u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt56u::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -124051,7 +122985,8 @@ + (void)readAttributeNullableInt56uWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt56u::TypeInfo; @@ -124060,9 +122995,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -124072,14 +123006,14 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt64uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt64u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -124094,12 +123028,13 @@ - (void)writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -124116,13 +123051,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt64uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -124131,27 +123064,25 @@ - (void)subscribeAttributeNullableInt64uWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt64u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt64u::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -124159,7 +123090,8 @@ + (void)readAttributeNullableInt64uWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt64u::TypeInfo; @@ -124168,9 +123100,8 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -124180,14 +123111,14 @@ new MTRNullableInt64uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt8sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt8s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt8sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -124202,12 +123133,13 @@ - (void)writeAttributeNullableInt8sWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -124224,13 +123156,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.charValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt8sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -124239,27 +123169,25 @@ - (void)subscribeAttributeNullableInt8sWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt8s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt8s::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -124267,7 +123195,8 @@ + (void)readAttributeNullableInt8sWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt8s::TypeInfo; @@ -124276,9 +123205,8 @@ new MTRNullableInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -124288,14 +123216,14 @@ new MTRNullableInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeNullableInt16sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt16s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt16sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -124310,12 +123238,13 @@ - (void)writeAttributeNullableInt16sWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -124332,13 +123261,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.shortValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt16sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -124347,27 +123274,25 @@ - (void)subscribeAttributeNullableInt16sWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt16s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt16s::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -124375,7 +123300,8 @@ + (void)readAttributeNullableInt16sWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt16s::TypeInfo; @@ -124384,9 +123310,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -124396,14 +123321,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt24sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt24s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt24sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -124418,12 +123343,13 @@ - (void)writeAttributeNullableInt24sWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -124440,13 +123366,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.intValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt24sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -124455,27 +123379,25 @@ - (void)subscribeAttributeNullableInt24sWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt24s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt24s::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -124483,7 +123405,8 @@ + (void)readAttributeNullableInt24sWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt24s::TypeInfo; @@ -124492,9 +123415,8 @@ new MTRNullableInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -124504,14 +123426,14 @@ new MTRNullableInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt32sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt32s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt32sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -124526,12 +123448,13 @@ - (void)writeAttributeNullableInt32sWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -124548,13 +123471,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.intValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt32sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -124563,27 +123484,25 @@ - (void)subscribeAttributeNullableInt32sWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt32sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt32sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt32s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt32sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt32s::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt32sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -124591,7 +123510,8 @@ + (void)readAttributeNullableInt32sWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt32sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt32s::TypeInfo; @@ -124600,9 +123520,8 @@ new MTRNullableInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -124612,14 +123531,14 @@ new MTRNullableInt32sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt40sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt40s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt40sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -124634,12 +123553,13 @@ - (void)writeAttributeNullableInt40sWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -124656,13 +123576,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.longLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt40sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -124671,27 +123589,25 @@ - (void)subscribeAttributeNullableInt40sWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt40s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt40s::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -124699,7 +123615,8 @@ + (void)readAttributeNullableInt40sWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt40s::TypeInfo; @@ -124708,9 +123625,8 @@ new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -124720,14 +123636,14 @@ new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt48sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt48s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt48sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -124742,12 +123658,13 @@ - (void)writeAttributeNullableInt48sWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -124764,13 +123681,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.longLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt48sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -124779,27 +123694,25 @@ - (void)subscribeAttributeNullableInt48sWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt48s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt48s::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -124807,7 +123720,8 @@ + (void)readAttributeNullableInt48sWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt48s::TypeInfo; @@ -124816,9 +123730,8 @@ new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -124828,14 +123741,14 @@ new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt56sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt56s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt56sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -124850,12 +123763,13 @@ - (void)writeAttributeNullableInt56sWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -124872,13 +123786,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.longLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt56sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -124887,27 +123799,25 @@ - (void)subscribeAttributeNullableInt56sWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt56s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt56s::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -124915,7 +123825,8 @@ + (void)readAttributeNullableInt56sWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt56s::TypeInfo; @@ -124924,9 +123835,8 @@ new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -124936,14 +123846,14 @@ new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableInt64sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableInt64s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableInt64sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -124958,12 +123868,13 @@ - (void)writeAttributeNullableInt64sWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -124980,13 +123891,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.longLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableInt64sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -124995,27 +123904,25 @@ - (void)subscribeAttributeNullableInt64sWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt64sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt64sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableInt64s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt64sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableInt64s::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt64sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -125023,7 +123930,8 @@ + (void)readAttributeNullableInt64sWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableInt64s::TypeInfo; @@ -125032,9 +123940,8 @@ new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -125044,14 +123951,14 @@ new MTRNullableInt64sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableEnum8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableEnum8::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableEnum8WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -125066,12 +123973,13 @@ - (void)writeAttributeNullableEnum8WithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -125088,13 +123996,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableEnum8WithParams:(MTRSubscribeParams * _Nonnull)params @@ -125103,27 +124009,25 @@ - (void)subscribeAttributeNullableEnum8WithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableEnum8::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableEnum8::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -125131,7 +124035,8 @@ + (void)readAttributeNullableEnum8WithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableEnum8::TypeInfo; @@ -125140,9 +124045,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -125152,14 +124056,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeNullableEnum16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableEnum16::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableEnum16WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -125174,12 +124078,13 @@ - (void)writeAttributeNullableEnum16WithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -125196,13 +124101,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedShortValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableEnum16WithParams:(MTRSubscribeParams * _Nonnull)params @@ -125211,27 +124114,25 @@ - (void)subscribeAttributeNullableEnum16WithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableEnum16::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableEnum16::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -125239,7 +124140,8 @@ + (void)readAttributeNullableEnum16WithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableEnum16::TypeInfo; @@ -125248,9 +124150,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -125260,14 +124161,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableFloatSingleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableFloatAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableFloatAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableFloatAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableFloatSingle::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableFloatSingleWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -125282,12 +124183,13 @@ - (void)writeAttributeNullableFloatSingleWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -125304,13 +124206,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.floatValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableFloatSingleWithParams:(MTRSubscribeParams * _Nonnull)params @@ -125320,27 +124220,25 @@ - (void)subscribeAttributeNullableFloatSingleWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableFloatAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableFloatAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableFloatSingle::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableFloatAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableFloatAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableFloatSingle::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableFloatAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -125349,7 +124247,8 @@ + (void)readAttributeNullableFloatSingleWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableFloatAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableFloatAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableFloatAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableFloatSingle::TypeInfo; @@ -125358,9 +124257,8 @@ new MTRNullableFloatAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -125370,14 +124268,14 @@ new MTRNullableFloatAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeNullableFloatDoubleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableDoubleAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableDoubleAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableDoubleAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableFloatDouble::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableFloatDoubleWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -125392,12 +124290,13 @@ - (void)writeAttributeNullableFloatDoubleWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -125414,13 +124313,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.doubleValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableFloatDoubleWithParams:(MTRSubscribeParams * _Nonnull)params @@ -125430,27 +124327,25 @@ - (void)subscribeAttributeNullableFloatDoubleWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableDoubleAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableDoubleAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableFloatDouble::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableDoubleAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableDoubleAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableFloatDouble::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableDoubleAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -125459,7 +124354,8 @@ + (void)readAttributeNullableFloatDoubleWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableDoubleAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableDoubleAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableDoubleAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableFloatDouble::TypeInfo; @@ -125468,9 +124364,8 @@ new MTRNullableDoubleAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -125480,14 +124375,14 @@ new MTRNullableDoubleAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableOctetStringWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableOctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableOctetStringWithValue:(NSData * _Nullable)value completion:(MTRStatusCompletion)completion @@ -125502,12 +124397,13 @@ - (void)writeAttributeNullableOctetStringWithValue:(NSData * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -125524,13 +124420,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = [self asByteSpan:value]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableOctetStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -125539,27 +124433,25 @@ - (void)subscribeAttributeNullableOctetStringWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableOctetStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableOctetString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableOctetString::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableOctetStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -125567,7 +124459,8 @@ + (void)readAttributeNullableOctetStringWithAttributeCache:(MTRAttributeCacheCon queue:(dispatch_queue_t)queue completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableOctetStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableOctetString::TypeInfo; @@ -125576,9 +124469,8 @@ new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelabl path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -125588,14 +124480,14 @@ new MTRNullableOctetStringAttributeCallbackBridge(queue, completion, ^(Cancelabl - (void)readAttributeNullableCharStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableCharStringAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableCharStringAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableCharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableCharString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableCharStringWithValue:(NSString * _Nullable)value completion:(MTRStatusCompletion)completion @@ -125610,12 +124502,13 @@ - (void)writeAttributeNullableCharStringWithValue:(NSString * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -125632,13 +124525,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = [self asCharSpan:value]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableCharStringWithParams:(MTRSubscribeParams * _Nonnull)params @@ -125648,27 +124539,25 @@ - (void)subscribeAttributeNullableCharStringWithParams:(MTRSubscribeParams * _No { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableCharStringAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableCharStringAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableCharString::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableCharStringAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableCharStringAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableCharString::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableCharStringAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -125677,7 +124566,8 @@ + (void)readAttributeNullableCharStringWithAttributeCache:(MTRAttributeCacheCont completion: (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableCharStringAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableCharStringAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableCharString::TypeInfo; @@ -125686,9 +124576,8 @@ new MTRNullableCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -125698,14 +124587,15 @@ new MTRNullableCharStringAttributeCallbackBridge(queue, completion, ^(Cancelable - (void)readAttributeNullableEnumAttrWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableTestClusterClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableEnumAttr::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableEnumAttrWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -125720,12 +124610,13 @@ - (void)writeAttributeNullableEnumAttrWithValue:(NSNumber * _Nullable)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -125742,13 +124633,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = static_cast>(value.unsignedCharValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableEnumAttrWithParams:(MTRSubscribeParams * _Nonnull)params @@ -125757,27 +124646,27 @@ - (void)subscribeAttributeNullableEnumAttrWithParams:(MTRSubscribeParams * _Nonn { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableEnumAttr::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NullableTestClusterClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableEnumAttr::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -125785,8 +124674,9 @@ + (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContai queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(NullableTestClusterClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableEnumAttr::TypeInfo; @@ -125795,9 +124685,8 @@ new MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -125808,14 +124697,15 @@ new MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge( - (void)readAttributeNullableStructWithCompletion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterNullableStructStructAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterNullableStructStructAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableStruct::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value @@ -125833,12 +124723,13 @@ - (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -125862,13 +124753,11 @@ new MTRDefaultSuccessCallbackBridge( nonNullValue_0.g = value.g.floatValue; nonNullValue_0.h = value.h.doubleValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableStructWithParams:(MTRSubscribeParams * _Nonnull)params @@ -125878,27 +124767,27 @@ - (void)subscribeAttributeNullableStructWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableStruct::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableStruct::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -125907,36 +124796,37 @@ + (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContaine completion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterNullableStructStructAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { - if (attributeCacheContainer.cppAttributeCache) { - chip::app::ConcreteAttributePath path; - using TypeInfo = TestCluster::Attributes::NullableStruct::TypeInfo; - path.mEndpointId = static_cast([endpoint unsignedShortValue]); - path.mClusterId = TypeInfo::GetClusterId(); - path.mAttributeId = TypeInfo::GetAttributeId(); - TypeInfo::DecodableType value; - CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); - if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + auto * bridge = new MTRTestClusterNullableStructStructAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TestClusterNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = TestCluster::Attributes::NullableStruct::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + if (err == CHIP_NO_ERROR) { + successCb(bridge, value); + } + return err; } - return err; - } - return CHIP_ERROR_NOT_FOUND; - }); + return CHIP_ERROR_NOT_FOUND; + }); } - (void)readAttributeNullableRangeRestrictedInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableRangeRestrictedInt8uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -125951,12 +124841,13 @@ - (void)writeAttributeNullableRangeRestrictedInt8uWithValue:(NSNumber * _Nullabl params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -125973,13 +124864,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedCharValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableRangeRestrictedInt8uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -125990,27 +124879,25 @@ - (void)subscribeAttributeNullableRangeRestrictedInt8uWithParams:(MTRSubscribePa { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8u::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -126019,7 +124906,8 @@ + (void)readAttributeNullableRangeRestrictedInt8uWithAttributeCache:(MTRAttribut completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8u::TypeInfo; @@ -126028,9 +124916,8 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -126041,14 +124928,14 @@ new MTRNullableInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeNullableRangeRestrictedInt8sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableRangeRestrictedInt8sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -126063,12 +124950,13 @@ - (void)writeAttributeNullableRangeRestrictedInt8sWithValue:(NSNumber * _Nullabl params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -126085,13 +124973,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.charValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableRangeRestrictedInt8sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -126102,27 +124988,25 @@ - (void)subscribeAttributeNullableRangeRestrictedInt8sWithParams:(MTRSubscribePa { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt8sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt8sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt8sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8s::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt8sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -126131,7 +125015,8 @@ + (void)readAttributeNullableRangeRestrictedInt8sWithAttributeCache:(MTRAttribut completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt8sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8s::TypeInfo; @@ -126140,9 +125025,8 @@ new MTRNullableInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -126153,14 +125037,14 @@ new MTRNullableInt8sAttributeCallbackBridge(queue, completion, ^(Cancelable * su - (void)readAttributeNullableRangeRestrictedInt16uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableRangeRestrictedInt16uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -126175,12 +125059,13 @@ - (void)writeAttributeNullableRangeRestrictedInt16uWithValue:(NSNumber * _Nullab params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -126197,13 +125082,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.unsignedShortValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableRangeRestrictedInt16uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -126214,27 +125097,25 @@ - (void)subscribeAttributeNullableRangeRestrictedInt16uWithParams:(MTRSubscribeP { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16uAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16u::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -126243,7 +125124,8 @@ + (void)readAttributeNullableRangeRestrictedInt16uWithAttributeCache:(MTRAttribu completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16u::TypeInfo; @@ -126252,9 +125134,8 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -126265,14 +125146,14 @@ new MTRNullableInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeNullableRangeRestrictedInt16sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeNullableRangeRestrictedInt16sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion @@ -126287,12 +125168,13 @@ - (void)writeAttributeNullableRangeRestrictedInt16sWithValue:(NSNumber * _Nullab params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -126309,13 +125191,11 @@ new MTRDefaultSuccessCallbackBridge( auto & nonNullValue_0 = cppValue.SetNonNull(); nonNullValue_0 = value.shortValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeNullableRangeRestrictedInt16sWithParams:(MTRSubscribeParams * _Nonnull)params @@ -126326,27 +125206,25 @@ - (void)subscribeAttributeNullableRangeRestrictedInt16sWithParams:(MTRSubscribeP { // Make a copy of params before we go async. params = [params copy]; - __block MTRNullableInt16sAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16s::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16s::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRNullableInt16sAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, + !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeNullableRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -126355,7 +125233,8 @@ + (void)readAttributeNullableRangeRestrictedInt16sWithAttributeCache:(MTRAttribu completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16s::TypeInfo; @@ -126364,9 +125243,8 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -126376,14 +125254,14 @@ new MTRNullableInt16sAttributeCallbackBridge(queue, completion, ^(Cancelable * s - (void)readAttributeWriteOnlyInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::WriteOnlyInt8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)writeAttributeWriteOnlyInt8uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion @@ -126398,12 +125276,13 @@ - (void)writeAttributeWriteOnlyInt8uWithValue:(NSNumber * _Nonnull)value params = [params copy]; value = [value copy]; - new MTRDefaultSuccessCallbackBridge( - self.callbackQueue, self.device, + auto * bridge = new MTRDefaultSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable ignored, NSError * _Nullable error) { completion(error); }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedWriteTimeout; if (params != nil) { if (params.timedWriteTimeout != nil) { @@ -126415,13 +125294,11 @@ new MTRDefaultSuccessCallbackBridge( using TypeInfo = TestCluster::Attributes::WriteOnlyInt8u::TypeInfo; TypeInfo::Type cppValue; cppValue = value.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.WriteAttribute( - cppValue, successFn->mContext, successFn->mCall, failureFn->mCall, timedWriteTimeout); + return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeWriteOnlyInt8uWithParams:(MTRSubscribeParams * _Nonnull)params @@ -126430,26 +125307,25 @@ - (void)subscribeAttributeWriteOnlyInt8uWithParams:(MTRSubscribeParams * _Nonnul { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt8uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt8uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::WriteOnlyInt8u::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt8uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -126457,7 +125333,8 @@ + (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContaine queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::WriteOnlyInt8u::TypeInfo; @@ -126466,9 +125343,8 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -126478,14 +125354,15 @@ new MTRInt8uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, C - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -126495,27 +125372,27 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _ { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::GeneratedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::GeneratedCommandList::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -126524,8 +125401,9 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterGeneratedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TestClusterGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::GeneratedCommandList::TypeInfo; @@ -126534,9 +125412,8 @@ new MTRTestClusterGeneratedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -126546,14 +125423,15 @@ new MTRTestClusterGeneratedCommandListListAttributeCallbackBridge( - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -126563,27 +125441,27 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::AcceptedCommandList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::AcceptedCommandList::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -126592,8 +125470,9 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon completion: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterAcceptedCommandListListAttributeCallbackBridge( - queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction( + ^(TestClusterAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::AcceptedCommandList::TypeInfo; @@ -126602,9 +125481,8 @@ new MTRTestClusterAcceptedCommandListListAttributeCallbackBridge( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -126614,14 +125492,14 @@ new MTRTestClusterAcceptedCommandListListAttributeCallbackBridge( - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterAttributeListListAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterAttributeListListAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params @@ -126630,27 +125508,26 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull { // Make a copy of params before we go async. params = [params copy]; - __block MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge * callbackBridge - = new MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - if (!params.resubscribeIfLost) { - // We don't support disabling auto-resubscribe. - return CHIP_ERROR_INVALID_ARGUMENT; - } - using TypeInfo = TestCluster::Attributes::AttributeList::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); + auto * bridge = new MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterAttributeListListAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); + if (!params.resubscribeIfLost) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = TestCluster::Attributes::AttributeList::TypeInfo; - chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, - params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); - }, - subscriptionEstablished); + chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], + MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); + }, + subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -126658,7 +125535,8 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - new MTRTestClusterAttributeListListAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterAttributeListListAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(TestClusterAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::AttributeList::TypeInfo; @@ -126667,9 +125545,8 @@ new MTRTestClusterAttributeListListAttributeCallbackBridge(queue, completion, ^( path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -126679,14 +125556,14 @@ new MTRTestClusterAttributeListListAttributeCallbackBridge(queue, completion, ^( - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params @@ -126695,26 +125572,25 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt32uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt32uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::FeatureMap::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt32uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -126722,7 +125598,8 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *) queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::FeatureMap::TypeInfo; @@ -126731,9 +125608,8 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } @@ -126743,14 +125619,14 @@ new MTRInt32uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { using TypeInfo = TestCluster::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + return cppCluster.ReadAttribute(bridge, successCb, failureCb); }); + std::move(*bridge).DispatchAction(self.device); } - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params @@ -126759,26 +125635,25 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu { // Make a copy of params before we go async. params = [params copy]; - __block MTRInt16uAttributeCallbackSubscriptionBridge * callbackBridge = new MTRInt16uAttributeCallbackSubscriptionBridge( - self.callbackQueue, self.device, reportHandler, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { + auto * typedBridge = static_cast(bridge); if (!params.resubscribeIfLost) { // We don't support disabling auto-resubscribe. return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = TestCluster::Attributes::ClusterRevision::TypeInfo; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - MTRInt16uAttributeCallbackSubscriptionBridge * innerCallbackBridge = callbackBridge; - return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, - [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric, - !params.replaceExistingSubscriptions, chip::NullOptional, - [innerCallbackBridge](void) { delete innerCallbackBridge; }); + return cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], + [params.maxInterval unsignedShortValue], MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional, + [typedBridge](void) { delete typedBridge; }); }, subscriptionEstablished); + std::move(*bridge).DispatchAction(self.device); } + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer @@ -126786,7 +125661,8 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { - new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion); + std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = TestCluster::Attributes::ClusterRevision::TypeInfo; @@ -126795,9 +125671,8 @@ new MTRInt16uAttributeCallbackBridge(queue, completion, ^(Cancelable * success, path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { - successFn->mCall(successFn->mContext, value); + successCb(bridge, value); } return err; } diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h index fe1c002b40ad80..5bd5d631189878 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h @@ -1114,17 +1114,12 @@ typedef void (*TestClusterAttributeListListAttributeCallback)(void * context, class MTRDefaultSuccessCallbackBridge : public MTRCallbackBridge { public: - MTRDefaultSuccessCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRDefaultSuccessCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDefaultSuccessCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRDefaultSuccessCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRDefaultSuccessCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context); }; @@ -1132,17 +1127,12 @@ class MTRDefaultSuccessCallbackBridge : public MTRCallbackBridge { public: - MTRCommandSuccessCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRCommandSuccessCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRCommandSuccessCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRCommandSuccessCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRCommandSuccessCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::NullObjectType &); }; @@ -1150,34 +1140,22 @@ class MTRCommandSuccessCallbackBridge : public MTRCallbackBridge { public: - MTROctetStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTROctetStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTROctetStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTROctetStringAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTROctetStringAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::ByteSpan value); }; class MTROctetStringAttributeCallbackSubscriptionBridge : public MTROctetStringAttributeCallbackBridge { public: - MTROctetStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTROctetStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROctetStringAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROctetStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROctetStringAttributeCallbackBridge(queue, device, handler, action, true), + MTROctetStringAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1190,37 +1168,23 @@ class MTROctetStringAttributeCallbackSubscriptionBridge : public MTROctetStringA class MTRNullableOctetStringAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableOctetStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableOctetStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableOctetStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableOctetStringAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableOctetStringAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableOctetStringAttributeCallbackSubscriptionBridge : public MTRNullableOctetStringAttributeCallbackBridge { public: - MTRNullableOctetStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableOctetStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOctetStringAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOctetStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOctetStringAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableOctetStringAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1233,34 +1197,22 @@ class MTRNullableOctetStringAttributeCallbackSubscriptionBridge : public MTRNull class MTRCharStringAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRCharStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRCharStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRCharStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRCharStringAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRCharStringAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::CharSpan value); }; class MTRCharStringAttributeCallbackSubscriptionBridge : public MTRCharStringAttributeCallbackBridge { public: - MTRCharStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTRCharStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRCharStringAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRCharStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRCharStringAttributeCallbackBridge(queue, device, handler, action, true), + MTRCharStringAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1273,37 +1225,22 @@ class MTRCharStringAttributeCallbackSubscriptionBridge : public MTRCharStringAtt class MTRNullableCharStringAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableCharStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableCharStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableCharStringAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableCharStringAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableCharStringAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableCharStringAttributeCallbackSubscriptionBridge : public MTRNullableCharStringAttributeCallbackBridge { public: - MTRNullableCharStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableCharStringAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableCharStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRNullableCharStringAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableCharStringAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableCharStringAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1316,34 +1253,22 @@ class MTRNullableCharStringAttributeCallbackSubscriptionBridge : public MTRNulla class MTRBooleanAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRBooleanAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRBooleanAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRBooleanAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRBooleanAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRBooleanAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, bool value); }; class MTRBooleanAttributeCallbackSubscriptionBridge : public MTRBooleanAttributeCallbackBridge { public: - MTRBooleanAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTRBooleanAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBooleanAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBooleanAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBooleanAttributeCallbackBridge(queue, device, handler, action, true), + MTRBooleanAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1356,36 +1281,22 @@ class MTRBooleanAttributeCallbackSubscriptionBridge : public MTRBooleanAttribute class MTRNullableBooleanAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableBooleanAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableBooleanAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableBooleanAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableBooleanAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableBooleanAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableBooleanAttributeCallbackSubscriptionBridge : public MTRNullableBooleanAttributeCallbackBridge { public: - MTRNullableBooleanAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableBooleanAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableBooleanAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableBooleanAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableBooleanAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableBooleanAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1398,17 +1309,12 @@ class MTRNullableBooleanAttributeCallbackSubscriptionBridge : public MTRNullable class MTRInt8uAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRInt8uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRInt8uAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRInt8uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRInt8uAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRInt8uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, uint8_t value); }; @@ -1416,16 +1322,9 @@ class MTRInt8uAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableInt8uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableInt8uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableInt8uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableInt8uAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableInt8uAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableInt8uAttributeCallbackSubscriptionBridge : public MTRNullableInt8uAttributeCallbackBridge { public: - MTRNullableInt8uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt8uAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableInt8uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableInt8uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt8uAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableInt8uAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1480,17 +1365,12 @@ class MTRNullableInt8uAttributeCallbackSubscriptionBridge : public MTRNullableIn class MTRInt8sAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRInt8sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRInt8sAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRInt8sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRInt8sAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRInt8sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, int8_t value); }; @@ -1498,16 +1378,9 @@ class MTRInt8sAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableInt8sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableInt8sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableInt8sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableInt8sAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableInt8sAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableInt8sAttributeCallbackSubscriptionBridge : public MTRNullableInt8sAttributeCallbackBridge { public: - MTRNullableInt8sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt8sAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableInt8sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableInt8sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt8sAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableInt8sAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1562,17 +1421,12 @@ class MTRNullableInt8sAttributeCallbackSubscriptionBridge : public MTRNullableIn class MTRInt16uAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRInt16uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRInt16uAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRInt16uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRInt16uAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRInt16uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, uint16_t value); }; @@ -1580,16 +1434,9 @@ class MTRInt16uAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableInt16uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableInt16uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableInt16uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableInt16uAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableInt16uAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableInt16uAttributeCallbackSubscriptionBridge : public MTRNullableInt16uAttributeCallbackBridge { public: - MTRNullableInt16uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt16uAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableInt16uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableInt16uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt16uAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableInt16uAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1644,17 +1477,12 @@ class MTRNullableInt16uAttributeCallbackSubscriptionBridge : public MTRNullableI class MTRInt16sAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRInt16sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRInt16sAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRInt16sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRInt16sAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRInt16sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, int16_t value); }; @@ -1662,16 +1490,9 @@ class MTRInt16sAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableInt16sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableInt16sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableInt16sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableInt16sAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableInt16sAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableInt16sAttributeCallbackSubscriptionBridge : public MTRNullableInt16sAttributeCallbackBridge { public: - MTRNullableInt16sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt16sAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableInt16sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableInt16sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt16sAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableInt16sAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1726,17 +1533,12 @@ class MTRNullableInt16sAttributeCallbackSubscriptionBridge : public MTRNullableI class MTRInt32uAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRInt32uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRInt32uAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRInt32uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRInt32uAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRInt32uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, uint32_t value); }; @@ -1744,16 +1546,9 @@ class MTRInt32uAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableInt32uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableInt32uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableInt32uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableInt32uAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableInt32uAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableInt32uAttributeCallbackSubscriptionBridge : public MTRNullableInt32uAttributeCallbackBridge { public: - MTRNullableInt32uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt32uAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableInt32uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableInt32uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt32uAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableInt32uAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1808,17 +1589,12 @@ class MTRNullableInt32uAttributeCallbackSubscriptionBridge : public MTRNullableI class MTRInt32sAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRInt32sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRInt32sAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRInt32sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRInt32sAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRInt32sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, int32_t value); }; @@ -1826,16 +1602,9 @@ class MTRInt32sAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableInt32sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableInt32sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableInt32sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableInt32sAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableInt32sAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableInt32sAttributeCallbackSubscriptionBridge : public MTRNullableInt32sAttributeCallbackBridge { public: - MTRNullableInt32sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt32sAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableInt32sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableInt32sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt32sAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableInt32sAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1890,17 +1645,12 @@ class MTRNullableInt32sAttributeCallbackSubscriptionBridge : public MTRNullableI class MTRInt64uAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRInt64uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRInt64uAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRInt64uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRInt64uAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRInt64uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, uint64_t value); }; @@ -1908,16 +1658,9 @@ class MTRInt64uAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableInt64uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableInt64uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableInt64uAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableInt64uAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableInt64uAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableInt64uAttributeCallbackSubscriptionBridge : public MTRNullableInt64uAttributeCallbackBridge { public: - MTRNullableInt64uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt64uAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableInt64uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableInt64uAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt64uAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableInt64uAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -1972,17 +1701,12 @@ class MTRNullableInt64uAttributeCallbackSubscriptionBridge : public MTRNullableI class MTRInt64sAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRInt64sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRInt64sAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRInt64sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRInt64sAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRInt64sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, int64_t value); }; @@ -1990,16 +1714,9 @@ class MTRInt64sAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableInt64sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableInt64sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableInt64sAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableInt64sAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableInt64sAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableInt64sAttributeCallbackSubscriptionBridge : public MTRNullableInt64sAttributeCallbackBridge { public: - MTRNullableInt64sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt64sAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableInt64sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableInt64sAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableInt64sAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableInt64sAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2054,17 +1757,12 @@ class MTRNullableInt64sAttributeCallbackSubscriptionBridge : public MTRNullableI class MTRFloatAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRFloatAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRFloatAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRFloatAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFloatAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRFloatAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, float value); }; @@ -2072,16 +1770,9 @@ class MTRFloatAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableFloatAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableFloatAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableFloatAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableFloatAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableFloatAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableFloatAttributeCallbackSubscriptionBridge : public MTRNullableFloatAttributeCallbackBridge { public: - MTRNullableFloatAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableFloatAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableFloatAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableFloatAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableFloatAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableFloatAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2136,17 +1813,12 @@ class MTRNullableFloatAttributeCallbackSubscriptionBridge : public MTRNullableFl class MTRDoubleAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDoubleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRDoubleAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRDoubleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoubleAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + MTRDoubleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, double value); }; @@ -2154,16 +1826,9 @@ class MTRDoubleAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableDoubleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableDoubleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableDoubleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableDoubleAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableDoubleAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableDoubleAttributeCallbackSubscriptionBridge : public MTRNullableDoubleAttributeCallbackBridge { public: - MTRNullableDoubleAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoubleAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoubleAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableDoubleAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoubleAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoubleAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2218,34 +1869,22 @@ class MTRNullableDoubleAttributeCallbackSubscriptionBridge : public MTRNullableD class MTRVendorIdAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRVendorIdAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRVendorIdAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRVendorIdAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRVendorIdAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRVendorIdAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::VendorId value); }; class MTRVendorIdAttributeCallbackSubscriptionBridge : public MTRVendorIdAttributeCallbackBridge { public: - MTRVendorIdAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTRVendorIdAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRVendorIdAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRVendorIdAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRVendorIdAttributeCallbackBridge(queue, device, handler, action, true), + MTRVendorIdAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2258,36 +1897,22 @@ class MTRVendorIdAttributeCallbackSubscriptionBridge : public MTRVendorIdAttribu class MTRNullableVendorIdAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRNullableVendorIdAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRNullableVendorIdAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRNullableVendorIdAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableVendorIdAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableVendorIdAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; class MTRNullableVendorIdAttributeCallbackSubscriptionBridge : public MTRNullableVendorIdAttributeCallbackBridge { public: - MTRNullableVendorIdAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableVendorIdAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableVendorIdAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, + MTRNullableVendorIdAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableVendorIdAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableVendorIdAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2302,20 +1927,12 @@ class MTRIdentifyGeneratedCommandListListAttributeCallbackBridge { public: MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -2324,18 +1941,10 @@ class MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRIdentifyGeneratedCommandListListAttributeCallbackBridge { public: - MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2350,20 +1959,12 @@ class MTRIdentifyAcceptedCommandListListAttributeCallbackBridge { public: MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -2372,18 +1973,10 @@ class MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRIdentifyAcceptedCommandListListAttributeCallbackBridge { public: - MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2396,38 +1989,23 @@ class MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRIdentifyAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRIdentifyAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRIdentifyAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRIdentifyAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRIdentifyAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRIdentifyAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge : public MTRIdentifyAttributeListListAttributeCallbackBridge { public: - MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRIdentifyAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2442,20 +2020,12 @@ class MTRGroupsGeneratedCommandListListAttributeCallbackBridge { public: MTRGroupsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRGroupsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGroupsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRGroupsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -2464,18 +2034,10 @@ class MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRGroupsGeneratedCommandListListAttributeCallbackBridge { public: - MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupsGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupsGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGroupsGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2490,18 +2052,12 @@ class MTRGroupsAcceptedCommandListListAttributeCallbackBridge { public: MTRGroupsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGroupsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGroupsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRGroupsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -2510,18 +2066,10 @@ class MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRGroupsAcceptedCommandListListAttributeCallbackBridge { public: - MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupsAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupsAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGroupsAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2534,37 +2082,23 @@ class MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRGroupsAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRGroupsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRGroupsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRGroupsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRGroupsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGroupsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge : public MTRGroupsAttributeListListAttributeCallbackBridge { public: - MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupsAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupsAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGroupsAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2579,20 +2113,12 @@ class MTRScenesGeneratedCommandListListAttributeCallbackBridge { public: MTRScenesGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRScenesGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRScenesGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRScenesGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -2601,18 +2127,10 @@ class MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRScenesGeneratedCommandListListAttributeCallbackBridge { public: - MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRScenesGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRScenesGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRScenesGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2627,18 +2145,12 @@ class MTRScenesAcceptedCommandListListAttributeCallbackBridge { public: MTRScenesAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRScenesAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRScenesAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRScenesAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -2647,18 +2159,10 @@ class MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRScenesAcceptedCommandListListAttributeCallbackBridge { public: - MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRScenesAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRScenesAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRScenesAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2671,37 +2175,23 @@ class MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRScenesAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRScenesAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRScenesAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRScenesAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRScenesAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRScenesAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRScenesAttributeListListAttributeCallbackSubscriptionBridge : public MTRScenesAttributeListListAttributeCallbackBridge { public: - MTRScenesAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRScenesAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRScenesAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRScenesAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRScenesAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRScenesAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2716,18 +2206,12 @@ class MTROnOffGeneratedCommandListListAttributeCallbackBridge { public: MTROnOffGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROnOffGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTROnOffGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTROnOffGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -2736,18 +2220,10 @@ class MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTROnOffGeneratedCommandListListAttributeCallbackBridge { public: - MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROnOffGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2762,18 +2238,12 @@ class MTROnOffAcceptedCommandListListAttributeCallbackBridge { public: MTROnOffAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTROnOffAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROnOffAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTROnOffAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -2782,18 +2252,10 @@ class MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTROnOffAcceptedCommandListListAttributeCallbackBridge { public: - MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROnOffAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2806,37 +2268,23 @@ class MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTROnOffAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTROnOffAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTROnOffAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTROnOffAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTROnOffAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTROnOffAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTROnOffAttributeListListAttributeCallbackSubscriptionBridge : public MTROnOffAttributeListListAttributeCallbackBridge { public: - MTROnOffAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROnOffAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROnOffAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROnOffAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2851,22 +2299,14 @@ class MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge { public: MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -2876,17 +2316,9 @@ class MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscr { public: MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2901,22 +2333,14 @@ class MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge { public: MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -2926,16 +2350,9 @@ class MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscri { public: MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2950,20 +2367,12 @@ class MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge { public: MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -2974,16 +2383,9 @@ class MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionB { public: MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -2998,20 +2400,12 @@ class MTRLevelControlGeneratedCommandListListAttributeCallbackBridge { public: MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3021,16 +2415,9 @@ class MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge { public: MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3045,20 +2432,12 @@ class MTRLevelControlAcceptedCommandListListAttributeCallbackBridge { public: MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3068,16 +2447,9 @@ class MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge { public: MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3092,18 +2464,12 @@ class MTRLevelControlAttributeListListAttributeCallbackBridge { public: MTRLevelControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRLevelControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRLevelControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRLevelControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3112,18 +2478,10 @@ class MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge : public MTRLevelControlAttributeListListAttributeCallbackBridge { public: - MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLevelControlAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLevelControlAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRLevelControlAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3138,20 +2496,12 @@ class MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge { public: MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -3162,16 +2512,9 @@ class MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBr { public: MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3186,20 +2529,12 @@ class MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge { public: MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -3210,16 +2545,9 @@ class MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBri { public: MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3234,20 +2562,12 @@ class MTRBinaryInputBasicAttributeListListAttributeCallbackBridge { public: MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3256,18 +2576,10 @@ class MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge : public MTRBinaryInputBasicAttributeListListAttributeCallbackBridge { public: - MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3282,18 +2594,12 @@ class MTRDescriptorDeviceTypeListListAttributeCallbackBridge { public: MTRDescriptorDeviceTypeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRDescriptorDeviceTypeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDescriptorDeviceTypeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRDescriptorDeviceTypeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -3305,18 +2611,10 @@ class MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge : public MTRDescriptorDeviceTypeListListAttributeCallbackBridge { public: - MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorDeviceTypeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorDeviceTypeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDescriptorDeviceTypeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3329,38 +2627,23 @@ class MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge class MTRDescriptorServerListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDescriptorServerListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRDescriptorServerListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRDescriptorServerListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRDescriptorServerListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDescriptorServerListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRDescriptorServerListListAttributeCallbackSubscriptionBridge : public MTRDescriptorServerListListAttributeCallbackBridge { public: - MTRDescriptorServerListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDescriptorServerListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorServerListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDescriptorServerListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorServerListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDescriptorServerListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3373,38 +2656,23 @@ class MTRDescriptorServerListListAttributeCallbackSubscriptionBridge : public MT class MTRDescriptorClientListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDescriptorClientListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRDescriptorClientListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRDescriptorClientListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRDescriptorClientListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDescriptorClientListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRDescriptorClientListListAttributeCallbackSubscriptionBridge : public MTRDescriptorClientListListAttributeCallbackBridge { public: - MTRDescriptorClientListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDescriptorClientListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorClientListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDescriptorClientListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorClientListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDescriptorClientListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3417,37 +2685,23 @@ class MTRDescriptorClientListListAttributeCallbackSubscriptionBridge : public MT class MTRDescriptorPartsListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDescriptorPartsListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRDescriptorPartsListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRDescriptorPartsListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRDescriptorPartsListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDescriptorPartsListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge : public MTRDescriptorPartsListListAttributeCallbackBridge { public: - MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorPartsListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorPartsListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDescriptorPartsListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3462,20 +2716,12 @@ class MTRDescriptorGeneratedCommandListListAttributeCallbackBridge { public: MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3484,18 +2730,10 @@ class MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRDescriptorGeneratedCommandListListAttributeCallbackBridge { public: - MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3510,20 +2748,12 @@ class MTRDescriptorAcceptedCommandListListAttributeCallbackBridge { public: MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3532,18 +2762,10 @@ class MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRDescriptorAcceptedCommandListListAttributeCallbackBridge { public: - MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3556,19 +2778,12 @@ class MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRDescriptorAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDescriptorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRDescriptorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRDescriptorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDescriptorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRDescriptorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3577,18 +2792,10 @@ class MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge : public MTRDescriptorAttributeListListAttributeCallbackBridge { public: - MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDescriptorAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDescriptorAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3601,19 +2808,13 @@ class MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge class MTRBindingBindingListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRBindingBindingListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRBindingBindingListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRBindingBindingListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRBindingBindingListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRBindingBindingListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn( void * context, const chip::app::DataModel::DecodableList & value); @@ -3622,18 +2823,9 @@ class MTRBindingBindingListAttributeCallbackBridge : public MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBindingGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBindingGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRBindingGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3670,18 +2854,10 @@ class MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRBindingGeneratedCommandListListAttributeCallbackBridge { public: - MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBindingGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBindingGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBindingGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3696,20 +2872,12 @@ class MTRBindingAcceptedCommandListListAttributeCallbackBridge { public: MTRBindingAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRBindingAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBindingAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRBindingAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3718,18 +2886,10 @@ class MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRBindingAcceptedCommandListListAttributeCallbackBridge { public: - MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBindingAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBindingAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBindingAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3742,38 +2902,23 @@ class MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRBindingAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRBindingAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRBindingAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRBindingAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRBindingAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRBindingAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRBindingAttributeListListAttributeCallbackSubscriptionBridge : public MTRBindingAttributeListListAttributeCallbackBridge { public: - MTRBindingAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBindingAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBindingAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBindingAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBindingAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBindingAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3786,19 +2931,13 @@ class MTRBindingAttributeListListAttributeCallbackSubscriptionBridge : public MT class MTRAccessControlAclListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRAccessControlAclListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRAccessControlAclListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRAccessControlAclListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRAccessControlAclListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRAccessControlAclListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn( void * context, const chip::app::DataModel::DecodableList & @@ -3808,18 +2947,10 @@ class MTRAccessControlAclListAttributeCallbackBridge : public MTRCallbackBridge< class MTRAccessControlAclListAttributeCallbackSubscriptionBridge : public MTRAccessControlAclListAttributeCallbackBridge { public: - MTRAccessControlAclListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAccessControlAclListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlAclListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAccessControlAclListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlAclListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAccessControlAclListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3832,19 +2963,12 @@ class MTRAccessControlAclListAttributeCallbackSubscriptionBridge : public MTRAcc class MTRAccessControlExtensionListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRAccessControlExtensionListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRAccessControlExtensionListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRAccessControlExtensionListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAccessControlExtensionListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRAccessControlExtensionListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -3855,18 +2979,10 @@ class MTRAccessControlExtensionListAttributeCallbackBridge : public MTRCallbackB class MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge : public MTRAccessControlExtensionListAttributeCallbackBridge { public: - MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlExtensionListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlExtensionListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAccessControlExtensionListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3881,20 +2997,12 @@ class MTRAccessControlGeneratedCommandListListAttributeCallbackBridge { public: MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3904,16 +3012,9 @@ class MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridg { public: MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3928,20 +3029,12 @@ class MTRAccessControlAcceptedCommandListListAttributeCallbackBridge { public: MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3951,16 +3044,9 @@ class MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge { public: MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -3975,20 +3061,12 @@ class MTRAccessControlAttributeListListAttributeCallbackBridge { public: MTRAccessControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRAccessControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAccessControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRAccessControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -3997,18 +3075,10 @@ class MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge : public MTRAccessControlAttributeListListAttributeCallbackBridge { public: - MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAccessControlAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4021,19 +3091,13 @@ class MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge class MTRActionsActionListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRActionsActionListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRActionsActionListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRActionsActionListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRActionsActionListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRActionsActionListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn( void * context, const chip::app::DataModel::DecodableList & value); @@ -4042,18 +3106,10 @@ class MTRActionsActionListListAttributeCallbackBridge : public MTRCallbackBridge class MTRActionsActionListListAttributeCallbackSubscriptionBridge : public MTRActionsActionListListAttributeCallbackBridge { public: - MTRActionsActionListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRActionsActionListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsActionListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRActionsActionListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsActionListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRActionsActionListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4066,20 +3122,13 @@ class MTRActionsActionListListAttributeCallbackSubscriptionBridge : public MTRAc class MTRActionsEndpointListsListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRActionsEndpointListsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRActionsEndpointListsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRActionsEndpointListsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRActionsEndpointListsListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRActionsEndpointListsListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn( void * context, const chip::app::DataModel::DecodableList & @@ -4089,18 +3138,10 @@ class MTRActionsEndpointListsListAttributeCallbackBridge : public MTRCallbackBri class MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge : public MTRActionsEndpointListsListAttributeCallbackBridge { public: - MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsEndpointListsListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsEndpointListsListAttributeCallbackBridge(queue, device, handler, action, true), + MTRActionsEndpointListsListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4115,20 +3156,12 @@ class MTRActionsGeneratedCommandListListAttributeCallbackBridge { public: MTRActionsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRActionsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRActionsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRActionsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -4137,18 +3170,10 @@ class MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRActionsGeneratedCommandListListAttributeCallbackBridge { public: - MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRActionsGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4163,20 +3188,12 @@ class MTRActionsAcceptedCommandListListAttributeCallbackBridge { public: MTRActionsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRActionsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRActionsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRActionsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -4185,18 +3202,10 @@ class MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRActionsAcceptedCommandListListAttributeCallbackBridge { public: - MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRActionsAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4209,38 +3218,23 @@ class MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRActionsAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRActionsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRActionsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRActionsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRActionsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRActionsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRActionsAttributeListListAttributeCallbackSubscriptionBridge : public MTRActionsAttributeListListAttributeCallbackBridge { public: - MTRActionsAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRActionsAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRActionsAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRActionsAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4253,19 +3247,12 @@ class MTRActionsAttributeListListAttributeCallbackSubscriptionBridge : public MT class MTRBasicCapabilityMinimaStructAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRBasicCapabilityMinimaStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRBasicCapabilityMinimaStructAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRBasicCapabilityMinimaStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBasicCapabilityMinimaStructAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRBasicCapabilityMinimaStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType & value); @@ -4275,18 +3262,10 @@ class MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge : public MTRBasicCapabilityMinimaStructAttributeCallbackBridge { public: - MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBasicCapabilityMinimaStructAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBasicCapabilityMinimaStructAttributeCallbackBridge(queue, device, handler, action, true), + MTRBasicCapabilityMinimaStructAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4301,18 +3280,12 @@ class MTRBasicGeneratedCommandListListAttributeCallbackBridge { public: MTRBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -4321,18 +3294,10 @@ class MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRBasicGeneratedCommandListListAttributeCallbackBridge { public: - MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBasicGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBasicGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBasicGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4347,18 +3312,12 @@ class MTRBasicAcceptedCommandListListAttributeCallbackBridge { public: MTRBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -4367,18 +3326,10 @@ class MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRBasicAcceptedCommandListListAttributeCallbackBridge { public: - MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBasicAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBasicAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBasicAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4391,37 +3342,23 @@ class MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRBasicAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRBasicAttributeListListAttributeCallbackSubscriptionBridge : public MTRBasicAttributeListListAttributeCallbackBridge { public: - MTRBasicAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBasicAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBasicAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBasicAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBasicAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBasicAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4436,23 +3373,14 @@ class MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridg { public: MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -4462,17 +3390,9 @@ class MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubsc { public: MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4487,22 +3407,14 @@ class MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge { public: MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -4512,17 +3424,9 @@ class MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscr { public: MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4537,20 +3441,12 @@ class MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge { public: MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -4561,16 +3457,9 @@ class MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscription { public: MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4585,23 +3474,14 @@ class MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridg { public: MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList< @@ -4613,17 +3493,9 @@ class MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubsc { public: MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4638,23 +3510,14 @@ class MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBrid { public: MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -4664,17 +3527,9 @@ class MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubs { public: MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4689,23 +3544,14 @@ class MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridg { public: MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -4715,17 +3561,9 @@ class MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubsc { public: MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4740,20 +3578,12 @@ class MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge { public: MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -4764,16 +3594,9 @@ class MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptio { public: MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4788,22 +3611,13 @@ class MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge { public: MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -4813,16 +3627,9 @@ class MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscript { public: MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(queue, device, handler, action, true), + MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4837,23 +3644,14 @@ class MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridg { public: MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -4863,17 +3661,9 @@ class MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubsc { public: MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4888,22 +3678,14 @@ class MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge { public: MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -4913,17 +3695,9 @@ class MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscr { public: MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4938,20 +3712,12 @@ class MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge { public: MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -4962,16 +3728,9 @@ class MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscription { public: MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -4986,22 +3745,14 @@ class MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge { public: MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -5013,17 +3764,9 @@ class MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscr { public: MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5038,22 +3781,14 @@ class MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge { public: MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5063,16 +3798,9 @@ class MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscrip { public: MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5087,22 +3815,13 @@ class MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge { public: MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5112,16 +3831,9 @@ class MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscript { public: MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5136,20 +3848,12 @@ class MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge { public: MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -5160,16 +3864,9 @@ class MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBri { public: MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5184,20 +3881,12 @@ class MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge { public: MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -5208,16 +3897,9 @@ class MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBr { public: MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5232,21 +3914,13 @@ class MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge { public: MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5256,16 +3930,9 @@ class MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBri { public: MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5280,20 +3947,12 @@ class MTRUnitLocalizationAttributeListListAttributeCallbackBridge { public: MTRUnitLocalizationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRUnitLocalizationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRUnitLocalizationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRUnitLocalizationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5302,18 +3961,10 @@ class MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge : public MTRUnitLocalizationAttributeListListAttributeCallbackBridge { public: - MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUnitLocalizationAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUnitLocalizationAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRUnitLocalizationAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5328,20 +3979,12 @@ class MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge { public: MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5351,16 +3994,9 @@ class MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge { public: MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5375,22 +4011,14 @@ class MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge { public: MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5400,17 +4028,9 @@ class MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscr { public: MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5425,22 +4045,14 @@ class MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge { public: MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5450,16 +4062,9 @@ class MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscri { public: MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5474,20 +4079,12 @@ class MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge { public: MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -5498,16 +4095,9 @@ class MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionB { public: MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5522,20 +4112,12 @@ class MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge { public: MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -5545,18 +4127,10 @@ class MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge : public MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge { public: - MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5571,20 +4145,12 @@ class MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge { public: MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -5594,18 +4160,10 @@ class MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge : public MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge { public: - MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5620,20 +4178,12 @@ class MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge { public: MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -5644,16 +4194,9 @@ class MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge { public: MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5668,20 +4211,12 @@ class MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge { public: MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5691,16 +4226,9 @@ class MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge { public: MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5715,20 +4243,12 @@ class MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge { public: MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5737,18 +4257,10 @@ class MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge { public: - MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5763,18 +4275,12 @@ class MTRPowerSourceAttributeListListAttributeCallbackBridge { public: MTRPowerSourceAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRPowerSourceAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRPowerSourceAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5783,18 +4289,10 @@ class MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge : public MTRPowerSourceAttributeListListAttributeCallbackBridge { public: - MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5809,22 +4307,14 @@ class MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge { public: MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -5836,17 +4326,9 @@ class MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscr { public: MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5861,22 +4343,13 @@ class MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge { public: MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5886,16 +4359,9 @@ class MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscripti { public: MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5910,20 +4376,12 @@ class MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge { public: MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -5934,16 +4392,9 @@ class MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptio { public: MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -5958,20 +4409,12 @@ class MTRGeneralCommissioningAttributeListListAttributeCallbackBridge { public: MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -5981,16 +4424,9 @@ class MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridg { public: MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6005,20 +4441,12 @@ class MTRNetworkCommissioningNetworksListAttributeCallbackBridge { public: MTRNetworkCommissioningNetworksListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNetworkCommissioningNetworksListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNetworkCommissioningNetworksListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNetworkCommissioningNetworksListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -6030,18 +4458,10 @@ class MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge : public MTRNetworkCommissioningNetworksListAttributeCallbackBridge { public: - MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningNetworksListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningNetworksListAttributeCallbackBridge(queue, device, handler, action, true), + MTRNetworkCommissioningNetworksListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6056,22 +4476,13 @@ class MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge { public: MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -6081,16 +4492,9 @@ class MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscripti { public: MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6105,20 +4509,12 @@ class MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge { public: MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -6129,16 +4525,9 @@ class MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptio { public: MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6153,20 +4542,12 @@ class MTRNetworkCommissioningAttributeListListAttributeCallbackBridge { public: MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -6176,16 +4557,9 @@ class MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridg { public: MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6200,20 +4574,12 @@ class MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge { public: MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -6224,16 +4590,9 @@ class MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBrid { public: MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6248,20 +4607,12 @@ class MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge { public: MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -6271,16 +4622,9 @@ class MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridg { public: MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6295,20 +4639,12 @@ class MTRDiagnosticLogsAttributeListListAttributeCallbackBridge { public: MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -6317,18 +4653,10 @@ class MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge : public MTRDiagnosticLogsAttributeListListAttributeCallbackBridge { public: - MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6343,20 +4671,12 @@ class MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge { public: MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -6369,16 +4689,9 @@ class MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBri { public: MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6393,20 +4706,12 @@ class MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge { public: MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -6417,16 +4722,9 @@ class MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscription { public: MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6441,20 +4739,12 @@ class MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge { public: MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -6465,16 +4755,9 @@ class MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBri { public: MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6489,20 +4772,12 @@ class MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge { public: MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -6513,16 +4788,9 @@ class MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionB { public: MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6537,20 +4805,12 @@ class MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge { public: MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -6561,16 +4821,9 @@ class MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscription { public: MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6585,20 +4838,12 @@ class MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge { public: MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -6609,16 +4854,9 @@ class MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionB { public: MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6633,20 +4871,12 @@ class MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge { public: MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -6656,16 +4886,9 @@ class MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge { public: MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6680,20 +4903,12 @@ class MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge { public: MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -6706,16 +4921,9 @@ class MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge { public: MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(queue, device, handler, action, true), + MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6730,20 +4938,12 @@ class MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge { public: MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -6754,16 +4954,9 @@ class MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptio { public: MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6778,20 +4971,12 @@ class MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge { public: MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -6802,16 +4987,9 @@ class MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscription { public: MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6826,20 +5004,12 @@ class MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge { public: MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -6849,16 +5019,9 @@ class MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge { public: MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6873,22 +5036,13 @@ class MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge { public: MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList< @@ -6900,16 +5054,9 @@ class MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscript { public: MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6924,20 +5071,12 @@ class MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge { public: MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -6950,16 +5089,9 @@ class MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscription { public: MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -6974,22 +5106,13 @@ class MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge { public: MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable< @@ -7001,16 +5124,9 @@ class MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscripti { public: MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(queue, device, handler, action, true), + MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7026,22 +5142,17 @@ class MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCall public: MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; + + MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable< @@ -7053,17 +5164,9 @@ class MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCall { public: MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge(queue, device, handler, action, true), + MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7078,23 +5181,14 @@ class MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBri { public: MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -7106,17 +5200,9 @@ class MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSub { public: MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7131,22 +5217,14 @@ class MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge { public: MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7156,17 +5234,9 @@ class MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscr { public: MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7181,22 +5251,14 @@ class MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge { public: MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7206,16 +5268,9 @@ class MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscri { public: MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7230,20 +5285,12 @@ class MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge { public: MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -7254,16 +5301,9 @@ class MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionB { public: MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7278,22 +5318,14 @@ class MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge { public: MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7303,16 +5335,9 @@ class MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscrip { public: MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7327,22 +5352,13 @@ class MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge { public: MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7352,16 +5368,9 @@ class MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscript { public: MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7376,20 +5385,12 @@ class MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge { public: MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -7400,16 +5401,9 @@ class MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBri { public: MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7424,23 +5418,14 @@ class MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBrid { public: MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7450,17 +5435,9 @@ class MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubs { public: MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7475,23 +5452,14 @@ class MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridg { public: MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7501,17 +5469,9 @@ class MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubsc { public: MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7526,20 +5486,12 @@ class MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge { public: MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -7550,16 +5502,9 @@ class MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptio { public: MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7574,22 +5519,14 @@ class MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge { public: MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7598,16 +5535,9 @@ class MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscription { public: MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7622,20 +5552,12 @@ class MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge { public: MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -7646,16 +5568,9 @@ class MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionB { public: MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7670,20 +5585,12 @@ class MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge { public: MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7693,16 +5600,9 @@ class MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge { public: MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7717,20 +5617,12 @@ class MTRSwitchGeneratedCommandListListAttributeCallbackBridge { public: MTRSwitchGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRSwitchGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRSwitchGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRSwitchGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7739,18 +5631,10 @@ class MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRSwitchGeneratedCommandListListAttributeCallbackBridge { public: - MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSwitchGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSwitchGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRSwitchGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7765,18 +5649,12 @@ class MTRSwitchAcceptedCommandListListAttributeCallbackBridge { public: MTRSwitchAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRSwitchAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRSwitchAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRSwitchAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7785,18 +5663,10 @@ class MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRSwitchAcceptedCommandListListAttributeCallbackBridge { public: - MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSwitchAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSwitchAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRSwitchAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7809,37 +5679,23 @@ class MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRSwitchAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRSwitchAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRSwitchAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRSwitchAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRSwitchAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRSwitchAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge : public MTRSwitchAttributeListListAttributeCallbackBridge { public: - MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSwitchAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRSwitchAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRSwitchAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7854,23 +5710,14 @@ class MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBrid { public: MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7880,17 +5727,9 @@ class MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubs { public: MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7905,23 +5744,14 @@ class MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridg { public: MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -7931,17 +5761,9 @@ class MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubsc { public: MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -7956,20 +5778,12 @@ class MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge { public: MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -7980,16 +5794,9 @@ class MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptio { public: MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8004,20 +5811,12 @@ class MTROperationalCredentialsNOCsListAttributeCallbackBridge { public: MTROperationalCredentialsNOCsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTROperationalCredentialsNOCsListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROperationalCredentialsNOCsListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTROperationalCredentialsNOCsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -8029,18 +5828,10 @@ class MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge : public MTROperationalCredentialsNOCsListAttributeCallbackBridge { public: - MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsNOCsListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsNOCsListAttributeCallbackBridge(queue, device, handler, action, true), + MTROperationalCredentialsNOCsListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8055,20 +5846,12 @@ class MTROperationalCredentialsFabricsListAttributeCallbackBridge { public: MTROperationalCredentialsFabricsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROperationalCredentialsFabricsListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROperationalCredentialsFabricsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROperationalCredentialsFabricsListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList< @@ -8079,18 +5862,10 @@ class MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge : public MTROperationalCredentialsFabricsListAttributeCallbackBridge { public: - MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsFabricsListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsFabricsListAttributeCallbackBridge(queue, device, handler, action, true), + MTROperationalCredentialsFabricsListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8105,23 +5880,14 @@ class MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridg { public: MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8131,17 +5897,9 @@ class MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubsc { public: MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(queue, device, handler, action, true), + MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8156,22 +5914,14 @@ class MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge { public: MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8181,16 +5931,9 @@ class MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscrip { public: MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8205,22 +5948,13 @@ class MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge { public: MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8230,16 +5964,9 @@ class MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscript { public: MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8254,20 +5981,12 @@ class MTROperationalCredentialsAttributeListListAttributeCallbackBridge { public: MTROperationalCredentialsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROperationalCredentialsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROperationalCredentialsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROperationalCredentialsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -8278,16 +5997,9 @@ class MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBri { public: MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROperationalCredentialsAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8302,20 +6014,12 @@ class MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge { public: MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList< @@ -8326,18 +6030,10 @@ class MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge : public MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge { public: - MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8352,20 +6048,12 @@ class MTRGroupKeyManagementGroupTableListAttributeCallbackBridge { public: MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList< @@ -8376,18 +6064,10 @@ class MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge : public MTRGroupKeyManagementGroupTableListAttributeCallbackBridge { public: - MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8402,20 +6082,12 @@ class MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge { public: MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -8426,16 +6098,9 @@ class MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscription { public: MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8450,20 +6115,12 @@ class MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge { public: MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -8474,16 +6131,9 @@ class MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionB { public: MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8498,20 +6148,12 @@ class MTRGroupKeyManagementAttributeListListAttributeCallbackBridge { public: MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8521,16 +6163,9 @@ class MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge { public: MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8543,19 +6178,13 @@ class MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge class MTRFixedLabelLabelListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRFixedLabelLabelListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRFixedLabelLabelListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRFixedLabelLabelListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRFixedLabelLabelListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRFixedLabelLabelListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn( void * context, const chip::app::DataModel::DecodableList & value); @@ -8564,18 +6193,10 @@ class MTRFixedLabelLabelListListAttributeCallbackBridge : public MTRCallbackBrid class MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge : public MTRFixedLabelLabelListListAttributeCallbackBridge { public: - MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFixedLabelLabelListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFixedLabelLabelListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRFixedLabelLabelListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8590,20 +6211,12 @@ class MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge { public: MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8612,18 +6225,10 @@ class MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge { public: - MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8638,20 +6243,12 @@ class MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge { public: MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8660,18 +6257,10 @@ class MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge { public: - MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8684,19 +6273,12 @@ class MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRFixedLabelAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRFixedLabelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRFixedLabelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFixedLabelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRFixedLabelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRFixedLabelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8705,18 +6287,10 @@ class MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge : public MTRFixedLabelAttributeListListAttributeCallbackBridge { public: - MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFixedLabelAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFixedLabelAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRFixedLabelAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8729,19 +6303,13 @@ class MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge class MTRUserLabelLabelListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRUserLabelLabelListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRUserLabelLabelListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRUserLabelLabelListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRUserLabelLabelListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRUserLabelLabelListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn( void * context, const chip::app::DataModel::DecodableList & value); @@ -8750,18 +6318,10 @@ class MTRUserLabelLabelListListAttributeCallbackBridge : public MTRCallbackBridg class MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge : public MTRUserLabelLabelListListAttributeCallbackBridge { public: - MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUserLabelLabelListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUserLabelLabelListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRUserLabelLabelListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8776,20 +6336,12 @@ class MTRUserLabelGeneratedCommandListListAttributeCallbackBridge { public: MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8798,18 +6350,10 @@ class MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRUserLabelGeneratedCommandListListAttributeCallbackBridge { public: - MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8824,20 +6368,12 @@ class MTRUserLabelAcceptedCommandListListAttributeCallbackBridge { public: MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8846,18 +6382,10 @@ class MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRUserLabelAcceptedCommandListListAttributeCallbackBridge { public: - MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8870,19 +6398,12 @@ class MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRUserLabelAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRUserLabelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRUserLabelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRUserLabelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRUserLabelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRUserLabelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8890,18 +6411,10 @@ class MTRUserLabelAttributeListListAttributeCallbackBridge : public MTRCallbackB class MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge : public MTRUserLabelAttributeListListAttributeCallbackBridge { public: - MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUserLabelAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUserLabelAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRUserLabelAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8916,20 +6429,12 @@ class MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge { public: MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8939,16 +6444,9 @@ class MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge { public: MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -8963,20 +6461,12 @@ class MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge { public: MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -8986,16 +6476,9 @@ class MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge { public: MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9010,18 +6493,12 @@ class MTRBooleanStateAttributeListListAttributeCallbackBridge { public: MTRBooleanStateAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRBooleanStateAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBooleanStateAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRBooleanStateAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -9030,18 +6507,10 @@ class MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge : public MTRBooleanStateAttributeListListAttributeCallbackBridge { public: - MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBooleanStateAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBooleanStateAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBooleanStateAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9056,18 +6525,12 @@ class MTRModeSelectSupportedModesListAttributeCallbackBridge { public: MTRModeSelectSupportedModesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRModeSelectSupportedModesListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRModeSelectSupportedModesListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRModeSelectSupportedModesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -9079,18 +6542,10 @@ class MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge : public MTRModeSelectSupportedModesListAttributeCallbackBridge { public: - MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRModeSelectSupportedModesListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRModeSelectSupportedModesListAttributeCallbackBridge(queue, device, handler, action, true), + MTRModeSelectSupportedModesListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9105,20 +6560,12 @@ class MTRModeSelectGeneratedCommandListListAttributeCallbackBridge { public: MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -9127,18 +6574,10 @@ class MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRModeSelectGeneratedCommandListListAttributeCallbackBridge { public: - MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9153,20 +6592,12 @@ class MTRModeSelectAcceptedCommandListListAttributeCallbackBridge { public: MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -9175,18 +6606,10 @@ class MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRModeSelectAcceptedCommandListListAttributeCallbackBridge { public: - MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9199,19 +6622,12 @@ class MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRModeSelectAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRModeSelectAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRModeSelectAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRModeSelectAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRModeSelectAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRModeSelectAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -9220,18 +6636,10 @@ class MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge : public MTRModeSelectAttributeListListAttributeCallbackBridge { public: - MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRModeSelectAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRModeSelectAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRModeSelectAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9246,20 +6654,12 @@ class MTRDoorLockCredentialRulesSupportAttributeCallbackBridge { public: MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::BitMask value); }; @@ -9268,18 +6668,10 @@ class MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge : public MTRDoorLockCredentialRulesSupportAttributeCallbackBridge { public: - MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9294,20 +6686,12 @@ class MTRDoorLockSupportedOperatingModesAttributeCallbackBridge { public: MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::BitMask value); }; @@ -9316,18 +6700,10 @@ class MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge : public MTRDoorLockSupportedOperatingModesAttributeCallbackBridge { public: - MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9342,20 +6718,12 @@ class MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge { public: MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::BitMask value); }; @@ -9365,16 +6733,9 @@ class MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge { public: MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9389,20 +6750,12 @@ class MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge { public: MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::BitMask value); }; @@ -9411,18 +6764,10 @@ class MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge : public MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge { public: - MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9437,20 +6782,12 @@ class MTRDoorLockGeneratedCommandListListAttributeCallbackBridge { public: MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -9459,18 +6796,10 @@ class MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRDoorLockGeneratedCommandListListAttributeCallbackBridge { public: - MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9485,20 +6814,12 @@ class MTRDoorLockAcceptedCommandListListAttributeCallbackBridge { public: MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -9507,18 +6828,10 @@ class MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRDoorLockAcceptedCommandListListAttributeCallbackBridge { public: - MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9531,38 +6844,23 @@ class MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRDoorLockAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDoorLockAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRDoorLockAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRDoorLockAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRDoorLockAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge : public MTRDoorLockAttributeListListAttributeCallbackBridge { public: - MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9575,19 +6873,12 @@ class MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge : public M class MTRWindowCoveringConfigStatusAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRWindowCoveringConfigStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRWindowCoveringConfigStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRWindowCoveringConfigStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWindowCoveringConfigStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRWindowCoveringConfigStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::BitMask value); }; @@ -9595,18 +6886,10 @@ class MTRWindowCoveringConfigStatusAttributeCallbackBridge : public MTRCallbackB class MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge : public MTRWindowCoveringConfigStatusAttributeCallbackBridge { public: - MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringConfigStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringConfigStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRWindowCoveringConfigStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9621,20 +6904,12 @@ class MTRWindowCoveringOperationalStatusAttributeCallbackBridge { public: MTRWindowCoveringOperationalStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWindowCoveringOperationalStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWindowCoveringOperationalStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRWindowCoveringOperationalStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::BitMask value); }; @@ -9643,18 +6918,10 @@ class MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge : public MTRWindowCoveringOperationalStatusAttributeCallbackBridge { public: - MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringOperationalStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringOperationalStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRWindowCoveringOperationalStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9667,37 +6934,22 @@ class MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge class MTRWindowCoveringModeAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRWindowCoveringModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRWindowCoveringModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRWindowCoveringModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRWindowCoveringModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRWindowCoveringModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::BitMask value); }; class MTRWindowCoveringModeAttributeCallbackSubscriptionBridge : public MTRWindowCoveringModeAttributeCallbackBridge { public: - MTRWindowCoveringModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWindowCoveringModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRWindowCoveringModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRWindowCoveringModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9710,19 +6962,12 @@ class MTRWindowCoveringModeAttributeCallbackSubscriptionBridge : public MTRWindo class MTRWindowCoveringSafetyStatusAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRWindowCoveringSafetyStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRWindowCoveringSafetyStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRWindowCoveringSafetyStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWindowCoveringSafetyStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRWindowCoveringSafetyStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::BitMask value); }; @@ -9730,18 +6975,10 @@ class MTRWindowCoveringSafetyStatusAttributeCallbackBridge : public MTRCallbackB class MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge : public MTRWindowCoveringSafetyStatusAttributeCallbackBridge { public: - MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringSafetyStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringSafetyStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRWindowCoveringSafetyStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9756,20 +6993,12 @@ class MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge { public: MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -9780,16 +7009,9 @@ class MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBrid { public: MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9804,20 +7026,12 @@ class MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge { public: MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -9827,16 +7041,9 @@ class MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridg { public: MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9851,20 +7058,12 @@ class MTRWindowCoveringAttributeListListAttributeCallbackBridge { public: MTRWindowCoveringAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWindowCoveringAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWindowCoveringAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRWindowCoveringAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -9873,18 +7072,10 @@ class MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge : public MTRWindowCoveringAttributeListListAttributeCallbackBridge { public: - MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRWindowCoveringAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9899,20 +7090,12 @@ class MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge { public: MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -9923,16 +7106,9 @@ class MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBrid { public: MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9947,20 +7123,12 @@ class MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge { public: MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -9970,16 +7138,9 @@ class MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridg { public: MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -9994,20 +7155,12 @@ class MTRBarrierControlAttributeListListAttributeCallbackBridge { public: MTRBarrierControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBarrierControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBarrierControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRBarrierControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10016,18 +7169,10 @@ class MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge : public MTRBarrierControlAttributeListListAttributeCallbackBridge { public: - MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBarrierControlAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBarrierControlAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBarrierControlAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10042,20 +7187,12 @@ class MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge { public: MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::BitMask value); }; @@ -10065,16 +7202,9 @@ class MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridg { public: MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10089,23 +7219,14 @@ class MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBri { public: MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10115,17 +7236,9 @@ class MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSub { public: MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10140,24 +7253,15 @@ class MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBrid { public: MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; + + MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10166,17 +7270,9 @@ class MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubs { public: MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10191,22 +7287,13 @@ class MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge { public: MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10216,16 +7303,9 @@ class MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscripti { public: MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10240,20 +7320,12 @@ class MTRThermostatGeneratedCommandListListAttributeCallbackBridge { public: MTRThermostatGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThermostatGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThermostatGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThermostatGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10262,18 +7334,10 @@ class MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRThermostatGeneratedCommandListListAttributeCallbackBridge { public: - MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRThermostatGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10288,20 +7352,12 @@ class MTRThermostatAcceptedCommandListListAttributeCallbackBridge { public: MTRThermostatAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThermostatAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThermostatAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThermostatAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10310,18 +7366,10 @@ class MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRThermostatAcceptedCommandListListAttributeCallbackBridge { public: - MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRThermostatAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10334,19 +7382,12 @@ class MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRThermostatAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRThermostatAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRThermostatAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRThermostatAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThermostatAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRThermostatAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10355,18 +7396,10 @@ class MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge : public MTRThermostatAttributeListListAttributeCallbackBridge { public: - MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRThermostatAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10381,20 +7414,12 @@ class MTRFanControlGeneratedCommandListListAttributeCallbackBridge { public: MTRFanControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFanControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFanControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRFanControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10403,18 +7428,10 @@ class MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRFanControlGeneratedCommandListListAttributeCallbackBridge { public: - MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFanControlGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFanControlGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRFanControlGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10429,20 +7446,12 @@ class MTRFanControlAcceptedCommandListListAttributeCallbackBridge { public: MTRFanControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFanControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFanControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRFanControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10451,18 +7460,10 @@ class MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRFanControlAcceptedCommandListListAttributeCallbackBridge { public: - MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFanControlAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFanControlAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRFanControlAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10475,19 +7476,12 @@ class MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRFanControlAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRFanControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRFanControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFanControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRFanControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRFanControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10496,18 +7490,10 @@ class MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge : public MTRFanControlAttributeListListAttributeCallbackBridge { public: - MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFanControlAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFanControlAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRFanControlAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10523,21 +7509,16 @@ class MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCa public: MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, + OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10547,18 +7528,9 @@ class MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCa { public: MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, - true), + MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10574,22 +7546,17 @@ class MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCal public: MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; + + MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10598,17 +7565,9 @@ class MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCal { public: MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10623,22 +7582,13 @@ class MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackB { public: MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -10649,17 +7599,9 @@ class MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackS { public: MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10674,20 +7616,12 @@ class MTRColorControlGeneratedCommandListListAttributeCallbackBridge { public: MTRColorControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRColorControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRColorControlGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10697,16 +7631,9 @@ class MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge { public: MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRColorControlGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10721,20 +7648,12 @@ class MTRColorControlAcceptedCommandListListAttributeCallbackBridge { public: MTRColorControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRColorControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRColorControlAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10744,16 +7663,9 @@ class MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge { public: MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRColorControlAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10768,18 +7680,12 @@ class MTRColorControlAttributeListListAttributeCallbackBridge { public: MTRColorControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRColorControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRColorControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRColorControlAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10788,18 +7694,10 @@ class MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge : public MTRColorControlAttributeListListAttributeCallbackBridge { public: - MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRColorControlAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10814,22 +7712,13 @@ class MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge { public: MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10839,16 +7728,9 @@ class MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscripti { public: MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10863,20 +7745,12 @@ class MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge { public: MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -10887,16 +7761,9 @@ class MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptio { public: MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10911,20 +7778,12 @@ class MTRBallastConfigurationAttributeListListAttributeCallbackBridge { public: MTRBallastConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRBallastConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRBallastConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRBallastConfigurationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10934,16 +7793,9 @@ class MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridg { public: MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBallastConfigurationAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRBallastConfigurationAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRBallastConfigurationAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -10958,22 +7810,14 @@ class MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge { public: MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -10983,16 +7827,9 @@ class MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscrip { public: MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11007,22 +7844,13 @@ class MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge { public: MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11032,16 +7860,9 @@ class MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscript { public: MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11056,20 +7877,12 @@ class MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge { public: MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -11080,16 +7893,9 @@ class MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBri { public: MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11104,22 +7910,14 @@ class MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge { public: MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11129,16 +7927,9 @@ class MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscrip { public: MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11153,22 +7944,13 @@ class MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge { public: MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11178,16 +7960,9 @@ class MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscript { public: MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11202,20 +7977,12 @@ class MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge { public: MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -11226,16 +7993,9 @@ class MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBri { public: MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11250,20 +8010,12 @@ class MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge { public: MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -11274,16 +8026,9 @@ class MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptio { public: MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11298,20 +8043,12 @@ class MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge { public: MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -11322,16 +8059,9 @@ class MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscription { public: MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11346,20 +8076,12 @@ class MTRPressureMeasurementAttributeListListAttributeCallbackBridge { public: MTRPressureMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPressureMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPressureMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPressureMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11369,16 +8091,9 @@ class MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge { public: MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPressureMeasurementAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPressureMeasurementAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRPressureMeasurementAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11393,20 +8108,12 @@ class MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge { public: MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -11417,16 +8124,9 @@ class MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBri { public: MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11441,20 +8141,12 @@ class MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge { public: MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -11465,16 +8157,9 @@ class MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBrid { public: MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11489,20 +8174,12 @@ class MTRFlowMeasurementAttributeListListAttributeCallbackBridge { public: MTRFlowMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFlowMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFlowMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRFlowMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11511,18 +8188,10 @@ class MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge : public MTRFlowMeasurementAttributeListListAttributeCallbackBridge { public: - MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFlowMeasurementAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFlowMeasurementAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRFlowMeasurementAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11537,23 +8206,14 @@ class MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBri { public: MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11563,17 +8223,9 @@ class MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSub { public: MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11588,23 +8240,14 @@ class MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBrid { public: MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11614,17 +8257,9 @@ class MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubs { public: MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11639,22 +8274,13 @@ class MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge { public: MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11664,16 +8290,9 @@ class MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscripti { public: MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11688,20 +8307,12 @@ class MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge { public: MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -11712,16 +8323,9 @@ class MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBr { public: MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11736,20 +8340,12 @@ class MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge { public: MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -11760,16 +8356,9 @@ class MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBri { public: MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11784,20 +8373,12 @@ class MTROccupancySensingAttributeListListAttributeCallbackBridge { public: MTROccupancySensingAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROccupancySensingAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROccupancySensingAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROccupancySensingAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11806,18 +8387,10 @@ class MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge : public MTROccupancySensingAttributeListListAttributeCallbackBridge { public: - MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTROccupancySensingAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROccupancySensingAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTROccupancySensingAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11832,20 +8405,12 @@ class MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge { public: MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11854,18 +8419,10 @@ class MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge { public: - MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11880,20 +8437,12 @@ class MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge { public: MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11902,18 +8451,10 @@ class MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge { public: - MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11926,19 +8467,12 @@ class MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRWakeOnLanAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRWakeOnLanAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRWakeOnLanAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRWakeOnLanAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWakeOnLanAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRWakeOnLanAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -11946,18 +8480,10 @@ class MTRWakeOnLanAttributeListListAttributeCallbackBridge : public MTRCallbackB class MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge : public MTRWakeOnLanAttributeListListAttributeCallbackBridge { public: - MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWakeOnLanAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWakeOnLanAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRWakeOnLanAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -11970,19 +8496,13 @@ class MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge : public class MTRChannelChannelListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRChannelChannelListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRChannelChannelListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRChannelChannelListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRChannelChannelListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRChannelChannelListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn( void * context, const chip::app::DataModel::DecodableList & value); @@ -11991,18 +8511,10 @@ class MTRChannelChannelListListAttributeCallbackBridge : public MTRCallbackBridg class MTRChannelChannelListListAttributeCallbackSubscriptionBridge : public MTRChannelChannelListListAttributeCallbackBridge { public: - MTRChannelChannelListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRChannelChannelListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelChannelListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRChannelChannelListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelChannelListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRChannelChannelListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12015,19 +8527,13 @@ class MTRChannelChannelListListAttributeCallbackSubscriptionBridge : public MTRC class MTRChannelLineupStructAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRChannelLineupStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRChannelLineupStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRChannelLineupStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRChannelLineupStructAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRChannelLineupStructAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -12036,18 +8542,10 @@ class MTRChannelLineupStructAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRChannelCurrentChannelStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRChannelCurrentChannelStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRChannelCurrentChannelStructAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRChannelCurrentChannelStructAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRChannelCurrentChannelStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -12083,18 +8574,10 @@ class MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge : public MTRChannelCurrentChannelStructAttributeCallbackBridge { public: - MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelCurrentChannelStructAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelCurrentChannelStructAttributeCallbackBridge(queue, device, handler, action, true), + MTRChannelCurrentChannelStructAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12109,20 +8592,12 @@ class MTRChannelGeneratedCommandListListAttributeCallbackBridge { public: MTRChannelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRChannelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRChannelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRChannelGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12131,18 +8606,10 @@ class MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRChannelGeneratedCommandListListAttributeCallbackBridge { public: - MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRChannelGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12157,20 +8624,12 @@ class MTRChannelAcceptedCommandListListAttributeCallbackBridge { public: MTRChannelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRChannelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRChannelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRChannelAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12179,18 +8638,10 @@ class MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRChannelAcceptedCommandListListAttributeCallbackBridge { public: - MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRChannelAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12203,38 +8654,23 @@ class MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRChannelAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRChannelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRChannelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRChannelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRChannelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRChannelAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRChannelAttributeListListAttributeCallbackSubscriptionBridge : public MTRChannelAttributeListListAttributeCallbackBridge { public: - MTRChannelAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRChannelAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRChannelAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRChannelAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12249,18 +8685,12 @@ class MTRTargetNavigatorTargetListListAttributeCallbackBridge { public: MTRTargetNavigatorTargetListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTargetNavigatorTargetListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTargetNavigatorTargetListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRTargetNavigatorTargetListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -12272,18 +8702,10 @@ class MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge : public MTRTargetNavigatorTargetListListAttributeCallbackBridge { public: - MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTargetNavigatorTargetListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTargetNavigatorTargetListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTargetNavigatorTargetListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12298,20 +8720,12 @@ class MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge { public: MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -12322,16 +8736,9 @@ class MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBri { public: MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12346,20 +8753,12 @@ class MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge { public: MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -12370,16 +8769,9 @@ class MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBrid { public: MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12394,20 +8786,12 @@ class MTRTargetNavigatorAttributeListListAttributeCallbackBridge { public: MTRTargetNavigatorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTargetNavigatorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTargetNavigatorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTargetNavigatorAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12416,18 +8800,10 @@ class MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge : public MTRTargetNavigatorAttributeListListAttributeCallbackBridge { public: - MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTargetNavigatorAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTargetNavigatorAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTargetNavigatorAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12442,20 +8818,12 @@ class MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge { public: MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -12466,18 +8834,10 @@ class MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge : public MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge { public: - MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(queue, device, handler, action, true), + MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12492,20 +8852,12 @@ class MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge { public: MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12515,16 +8867,9 @@ class MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridg { public: MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12539,20 +8884,12 @@ class MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge { public: MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12562,16 +8899,9 @@ class MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge { public: MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12586,20 +8916,12 @@ class MTRMediaPlaybackAttributeListListAttributeCallbackBridge { public: MTRMediaPlaybackAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRMediaPlaybackAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRMediaPlaybackAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRMediaPlaybackAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12608,18 +8930,10 @@ class MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge : public MTRMediaPlaybackAttributeListListAttributeCallbackBridge { public: - MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRMediaPlaybackAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12632,19 +8946,13 @@ class MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge class MTRMediaInputInputListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRMediaInputInputListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRMediaInputInputListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRMediaInputInputListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRMediaInputInputListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRMediaInputInputListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn( void * context, const chip::app::DataModel::DecodableList & value); @@ -12653,18 +8961,10 @@ class MTRMediaInputInputListListAttributeCallbackBridge : public MTRCallbackBrid class MTRMediaInputInputListListAttributeCallbackSubscriptionBridge : public MTRMediaInputInputListListAttributeCallbackBridge { public: - MTRMediaInputInputListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRMediaInputInputListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaInputInputListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRMediaInputInputListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaInputInputListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRMediaInputInputListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12679,20 +8979,12 @@ class MTRMediaInputGeneratedCommandListListAttributeCallbackBridge { public: MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12701,18 +8993,10 @@ class MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRMediaInputGeneratedCommandListListAttributeCallbackBridge { public: - MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12727,20 +9011,12 @@ class MTRMediaInputAcceptedCommandListListAttributeCallbackBridge { public: MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12749,18 +9025,10 @@ class MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRMediaInputAcceptedCommandListListAttributeCallbackBridge { public: - MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12773,19 +9041,12 @@ class MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRMediaInputAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRMediaInputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRMediaInputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRMediaInputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRMediaInputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRMediaInputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12794,18 +9055,10 @@ class MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge : public MTRMediaInputAttributeListListAttributeCallbackBridge { public: - MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaInputAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaInputAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRMediaInputAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12820,20 +9073,12 @@ class MTRLowPowerGeneratedCommandListListAttributeCallbackBridge { public: MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12842,18 +9087,10 @@ class MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge : public MTRLowPowerGeneratedCommandListListAttributeCallbackBridge { public: - MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12868,20 +9105,12 @@ class MTRLowPowerAcceptedCommandListListAttributeCallbackBridge { public: MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12890,18 +9119,10 @@ class MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRLowPowerAcceptedCommandListListAttributeCallbackBridge { public: - MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12914,38 +9135,23 @@ class MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge class MTRLowPowerAttributeListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRLowPowerAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRLowPowerAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRLowPowerAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRLowPowerAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRLowPowerAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge : public MTRLowPowerAttributeListListAttributeCallbackBridge { public: - MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLowPowerAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLowPowerAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRLowPowerAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -12960,20 +9166,12 @@ class MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge { public: MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -12983,16 +9181,9 @@ class MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge { public: MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13007,20 +9198,12 @@ class MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge { public: MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13029,18 +9212,10 @@ class MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge { public: - MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13055,18 +9230,12 @@ class MTRKeypadInputAttributeListListAttributeCallbackBridge { public: MTRKeypadInputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRKeypadInputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRKeypadInputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRKeypadInputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13075,18 +9244,10 @@ class MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge : public MTRKeypadInputAttributeListListAttributeCallbackBridge { public: - MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRKeypadInputAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRKeypadInputAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRKeypadInputAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13101,20 +9262,12 @@ class MTRContentLauncherAcceptHeaderListAttributeCallbackBridge { public: MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13123,18 +9276,10 @@ class MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge : public MTRContentLauncherAcceptHeaderListAttributeCallbackBridge { public: - MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(queue, device, handler, action, true), + MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13149,20 +9294,12 @@ class MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge { public: MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -13173,16 +9310,9 @@ class MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBri { public: MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13197,20 +9327,12 @@ class MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge { public: MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -13221,16 +9343,9 @@ class MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBrid { public: MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13245,20 +9360,12 @@ class MTRContentLauncherAttributeListListAttributeCallbackBridge { public: MTRContentLauncherAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRContentLauncherAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRContentLauncherAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRContentLauncherAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13267,18 +9374,10 @@ class MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge : public MTRContentLauncherAttributeListListAttributeCallbackBridge { public: - MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRContentLauncherAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13291,20 +9390,13 @@ class MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge class MTRAudioOutputOutputListListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRAudioOutputOutputListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRAudioOutputOutputListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRAudioOutputOutputListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRAudioOutputOutputListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRAudioOutputOutputListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn( void * context, const chip::app::DataModel::DecodableList & value); @@ -13313,18 +9405,10 @@ class MTRAudioOutputOutputListListAttributeCallbackBridge : public MTRCallbackBr class MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge : public MTRAudioOutputOutputListListAttributeCallbackBridge { public: - MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAudioOutputOutputListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAudioOutputOutputListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAudioOutputOutputListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13339,20 +9423,12 @@ class MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge { public: MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13362,16 +9438,9 @@ class MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge { public: MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13386,20 +9455,12 @@ class MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge { public: MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13408,18 +9469,10 @@ class MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge { public: - MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13434,18 +9487,12 @@ class MTRAudioOutputAttributeListListAttributeCallbackBridge { public: MTRAudioOutputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAudioOutputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRAudioOutputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRAudioOutputAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13454,18 +9501,10 @@ class MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge : public MTRAudioOutputAttributeListListAttributeCallbackBridge { public: - MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAudioOutputAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAudioOutputAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAudioOutputAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13480,20 +9519,12 @@ class MTRApplicationLauncherCatalogListListAttributeCallbackBridge { public: MTRApplicationLauncherCatalogListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationLauncherCatalogListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRApplicationLauncherCatalogListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRApplicationLauncherCatalogListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13502,18 +9533,10 @@ class MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge : public MTRApplicationLauncherCatalogListListAttributeCallbackBridge { public: - MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherCatalogListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherCatalogListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationLauncherCatalogListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13528,20 +9551,12 @@ class MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge { public: MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -13554,16 +9569,9 @@ class MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge { public: MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13578,20 +9586,12 @@ class MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge { public: MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -13602,16 +9602,9 @@ class MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptio { public: MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13626,20 +9619,12 @@ class MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge { public: MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -13650,16 +9635,9 @@ class MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscription { public: MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13674,20 +9652,12 @@ class MTRApplicationLauncherAttributeListListAttributeCallbackBridge { public: MTRApplicationLauncherAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationLauncherAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRApplicationLauncherAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRApplicationLauncherAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13697,16 +9667,9 @@ class MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge { public: MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationLauncherAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13721,20 +9684,12 @@ class MTRApplicationBasicApplicationStructAttributeCallbackBridge { public: MTRApplicationBasicApplicationStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationBasicApplicationStructAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRApplicationBasicApplicationStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRApplicationBasicApplicationStructAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -13745,18 +9700,10 @@ class MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge : public MTRApplicationBasicApplicationStructAttributeCallbackBridge { public: - MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicApplicationStructAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicApplicationStructAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationBasicApplicationStructAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13771,20 +9718,12 @@ class MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge { public: MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13794,16 +9733,9 @@ class MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridg { public: MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13818,20 +9750,12 @@ class MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge { public: MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -13842,16 +9766,9 @@ class MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBr { public: MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13866,20 +9783,12 @@ class MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge { public: MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -13890,16 +9799,9 @@ class MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBri { public: MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13914,20 +9816,12 @@ class MTRApplicationBasicAttributeListListAttributeCallbackBridge { public: MTRApplicationBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRApplicationBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRApplicationBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13936,18 +9830,10 @@ class MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge : public MTRApplicationBasicAttributeListListAttributeCallbackBridge { public: - MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationBasicAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -13962,20 +9848,12 @@ class MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge { public: MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -13985,16 +9863,9 @@ class MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge { public: MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14009,20 +9880,12 @@ class MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge { public: MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -14032,16 +9895,9 @@ class MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge { public: MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14056,18 +9912,12 @@ class MTRAccountLoginAttributeListListAttributeCallbackBridge { public: MTRAccountLoginAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRAccountLoginAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAccountLoginAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRAccountLoginAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -14076,18 +9926,10 @@ class MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge : public MTRAccountLoginAttributeListListAttributeCallbackBridge { public: - MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccountLoginAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccountLoginAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRAccountLoginAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14102,22 +9944,13 @@ class MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge { public: MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -14127,16 +9960,9 @@ class MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscript { public: MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14151,22 +9977,13 @@ class MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge { public: MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -14176,16 +9993,9 @@ class MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscripti { public: MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14200,20 +10010,12 @@ class MTRElectricalMeasurementAttributeListListAttributeCallbackBridge { public: MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); @@ -14224,16 +10026,9 @@ class MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBrid { public: MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14246,37 +10041,22 @@ class MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBrid class MTRTestClusterBitmap8AttributeCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRTestClusterBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRTestClusterBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRTestClusterBitmap8AttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterBitmap8AttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::BitMask value); }; class MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge : public MTRTestClusterBitmap8AttributeCallbackBridge { public: - MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterBitmap8AttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterBitmap8AttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterBitmap8AttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14289,37 +10069,23 @@ class MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge : public MTRTestC class MTRTestClusterBitmap16AttributeCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRTestClusterBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRTestClusterBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRTestClusterBitmap16AttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterBitmap16AttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::BitMask value); }; class MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge : public MTRTestClusterBitmap16AttributeCallbackBridge { public: - MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterBitmap16AttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterBitmap16AttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterBitmap16AttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14332,37 +10098,23 @@ class MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge : public MTRTest class MTRTestClusterBitmap32AttributeCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRTestClusterBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRTestClusterBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRTestClusterBitmap32AttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterBitmap32AttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::BitMask value); }; class MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge : public MTRTestClusterBitmap32AttributeCallbackBridge { public: - MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterBitmap32AttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterBitmap32AttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterBitmap32AttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14375,37 +10127,23 @@ class MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge : public MTRTest class MTRTestClusterBitmap64AttributeCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRTestClusterBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRTestClusterBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRTestClusterBitmap64AttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterBitmap64AttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::BitMask value); }; class MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge : public MTRTestClusterBitmap64AttributeCallbackBridge { public: - MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterBitmap64AttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterBitmap64AttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterBitmap64AttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14418,38 +10156,23 @@ class MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge : public MTRTest class MTRTestClusterListInt8uListAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterListInt8uListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRTestClusterListInt8uListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRTestClusterListInt8uListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRTestClusterListInt8uListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterListInt8uListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; class MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge : public MTRTestClusterListInt8uListAttributeCallbackBridge { public: - MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListInt8uListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListInt8uListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterListInt8uListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14464,20 +10187,12 @@ class MTRTestClusterListOctetStringListAttributeCallbackBridge { public: MTRTestClusterListOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRTestClusterListOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterListOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRTestClusterListOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -14486,18 +10201,10 @@ class MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge : public MTRTestClusterListOctetStringListAttributeCallbackBridge { public: - MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListOctetStringListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListOctetStringListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterListOctetStringListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14512,20 +10219,12 @@ class MTRTestClusterListStructOctetStringListAttributeCallbackBridge { public: MTRTestClusterListStructOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterListStructOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterListStructOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTestClusterListStructOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -14538,16 +10237,9 @@ class MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge { public: MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListStructOctetStringListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListStructOctetStringListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterListStructOctetStringListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14562,22 +10254,14 @@ class MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge { public: MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList< @@ -14589,16 +10273,9 @@ class MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscrip { public: MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14611,19 +10288,12 @@ class MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscrip class MTRTestClusterStructAttrStructAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterStructAttrStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRTestClusterStructAttrStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterStructAttrStructAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterStructAttrStructAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRTestClusterStructAttrStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::TestCluster::Structs::SimpleStruct::DecodableType & value); }; @@ -14632,18 +10302,10 @@ class MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge : public MTRTestClusterStructAttrStructAttributeCallbackBridge { public: - MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterStructAttrStructAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterStructAttrStructAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterStructAttrStructAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14658,20 +10320,12 @@ class MTRTestClusterListLongOctetStringListAttributeCallbackBridge { public: MTRTestClusterListLongOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterListLongOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterListLongOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTestClusterListLongOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -14680,18 +10334,10 @@ class MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge : public MTRTestClusterListLongOctetStringListAttributeCallbackBridge { public: - MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListLongOctetStringListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListLongOctetStringListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterListLongOctetStringListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14706,20 +10352,12 @@ class MTRTestClusterListFabricScopedListAttributeCallbackBridge { public: MTRTestClusterListFabricScopedListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterListFabricScopedListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterListFabricScopedListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterListFabricScopedListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -14731,18 +10369,10 @@ class MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge : public MTRTestClusterListFabricScopedListAttributeCallbackBridge { public: - MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListFabricScopedListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterListFabricScopedListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterListFabricScopedListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14755,19 +10385,12 @@ class MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge class MTRTestClusterNullableBitmap8AttributeCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterNullableBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRTestClusterNullableBitmap8AttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRTestClusterNullableBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterNullableBitmap8AttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRTestClusterNullableBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -14777,18 +10400,10 @@ class MTRTestClusterNullableBitmap8AttributeCallbackBridge : public MTRCallbackB class MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge : public MTRTestClusterNullableBitmap8AttributeCallbackBridge { public: - MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterNullableBitmap8AttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterNullableBitmap8AttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterNullableBitmap8AttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14801,19 +10416,12 @@ class MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge : public class MTRTestClusterNullableBitmap16AttributeCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterNullableBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRTestClusterNullableBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterNullableBitmap16AttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterNullableBitmap16AttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRTestClusterNullableBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -14824,18 +10432,10 @@ class MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge : public MTRTestClusterNullableBitmap16AttributeCallbackBridge { public: - MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterNullableBitmap16AttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterNullableBitmap16AttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterNullableBitmap16AttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14848,19 +10448,12 @@ class MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge class MTRTestClusterNullableBitmap32AttributeCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterNullableBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRTestClusterNullableBitmap32AttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRTestClusterNullableBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterNullableBitmap32AttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRTestClusterNullableBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -14871,18 +10464,10 @@ class MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge : public MTRTestClusterNullableBitmap32AttributeCallbackBridge { public: - MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterNullableBitmap32AttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterNullableBitmap32AttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterNullableBitmap32AttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14895,19 +10480,12 @@ class MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge class MTRTestClusterNullableBitmap64AttributeCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterNullableBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRTestClusterNullableBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterNullableBitmap64AttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterNullableBitmap64AttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRTestClusterNullableBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -14918,18 +10496,10 @@ class MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge : public MTRTestClusterNullableBitmap64AttributeCallbackBridge { public: - MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterNullableBitmap64AttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterNullableBitmap64AttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterNullableBitmap64AttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14944,20 +10514,12 @@ class MTRTestClusterNullableStructStructAttributeCallbackBridge { public: MTRTestClusterNullableStructStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterNullableStructStructAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterNullableStructStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterNullableStructStructAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -14968,18 +10530,10 @@ class MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge : public MTRTestClusterNullableStructStructAttributeCallbackBridge { public: - MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterNullableStructStructAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterNullableStructStructAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterNullableStructStructAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -14994,20 +10548,12 @@ class MTRTestClusterGeneratedCommandListListAttributeCallbackBridge { public: MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -15017,16 +10563,9 @@ class MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge { public: MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -15041,20 +10580,12 @@ class MTRTestClusterAcceptedCommandListListAttributeCallbackBridge { public: MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -15063,18 +10594,10 @@ class MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge : public MTRTestClusterAcceptedCommandListListAttributeCallbackBridge { public: - MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -15089,18 +10612,12 @@ class MTRTestClusterAttributeListListAttributeCallbackBridge { public: MTRTestClusterAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRTestClusterAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRTestClusterAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; @@ -15109,18 +10626,10 @@ class MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge : public MTRTestClusterAttributeListListAttributeCallbackBridge { public: - MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterAttributeListListAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterAttributeListListAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterAttributeListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -15133,38 +10642,26 @@ class MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge class MTRGroupsClusterAddGroupResponseCallbackBridge : public MTRCallbackBridge { public: - MTRGroupsClusterAddGroupResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRGroupsClusterAddGroupResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRGroupsClusterAddGroupResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRGroupsClusterAddGroupResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGroupsClusterAddGroupResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::Clusters::Groups::Commands::AddGroupResponse::DecodableType & data); }; class MTRGroupsClusterViewGroupResponseCallbackBridge : public MTRCallbackBridge { public: - MTRGroupsClusterViewGroupResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRGroupsClusterViewGroupResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRGroupsClusterViewGroupResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRGroupsClusterViewGroupResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGroupsClusterViewGroupResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::Clusters::Groups::Commands::ViewGroupResponse::DecodableType & data); }; @@ -15173,20 +10670,12 @@ class MTRGroupsClusterGetGroupMembershipResponseCallbackBridge { public: MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::Groups::Commands::GetGroupMembershipResponse::DecodableType & data); @@ -15195,76 +10684,52 @@ class MTRGroupsClusterGetGroupMembershipResponseCallbackBridge class MTRGroupsClusterRemoveGroupResponseCallbackBridge : public MTRCallbackBridge { public: - MTRGroupsClusterRemoveGroupResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRGroupsClusterRemoveGroupResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRGroupsClusterRemoveGroupResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRGroupsClusterRemoveGroupResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGroupsClusterRemoveGroupResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::Clusters::Groups::Commands::RemoveGroupResponse::DecodableType & data); }; class MTRScenesClusterAddSceneResponseCallbackBridge : public MTRCallbackBridge { public: - MTRScenesClusterAddSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRScenesClusterAddSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRScenesClusterAddSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRScenesClusterAddSceneResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRScenesClusterAddSceneResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::Clusters::Scenes::Commands::AddSceneResponse::DecodableType & data); }; class MTRScenesClusterViewSceneResponseCallbackBridge : public MTRCallbackBridge { public: - MTRScenesClusterViewSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRScenesClusterViewSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRScenesClusterViewSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRScenesClusterViewSceneResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRScenesClusterViewSceneResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::Clusters::Scenes::Commands::ViewSceneResponse::DecodableType & data); }; class MTRScenesClusterRemoveSceneResponseCallbackBridge : public MTRCallbackBridge { public: - MTRScenesClusterRemoveSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRScenesClusterRemoveSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRScenesClusterRemoveSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRScenesClusterRemoveSceneResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRScenesClusterRemoveSceneResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::Clusters::Scenes::Commands::RemoveSceneResponse::DecodableType & data); }; @@ -15272,20 +10737,12 @@ class MTRScenesClusterRemoveAllScenesResponseCallbackBridge : public MTRCallbackBridge { public: - MTRScenesClusterRemoveAllScenesResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRScenesClusterRemoveAllScenesResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRScenesClusterRemoveAllScenesResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRScenesClusterRemoveAllScenesResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRScenesClusterRemoveAllScenesResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::Scenes::Commands::RemoveAllScenesResponse::DecodableType & data); @@ -15294,19 +10751,13 @@ class MTRScenesClusterRemoveAllScenesResponseCallbackBridge class MTRScenesClusterStoreSceneResponseCallbackBridge : public MTRCallbackBridge { public: - MTRScenesClusterStoreSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRScenesClusterStoreSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRScenesClusterStoreSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRScenesClusterStoreSceneResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRScenesClusterStoreSceneResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::Clusters::Scenes::Commands::StoreSceneResponse::DecodableType & data); }; @@ -15315,20 +10766,12 @@ class MTRScenesClusterGetSceneMembershipResponseCallbackBridge { public: MTRScenesClusterGetSceneMembershipResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRScenesClusterGetSceneMembershipResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRScenesClusterGetSceneMembershipResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRScenesClusterGetSceneMembershipResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType & data); @@ -15339,19 +10782,12 @@ class MTRScenesClusterEnhancedAddSceneResponseCallbackBridge { public: MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::Scenes::Commands::EnhancedAddSceneResponse::DecodableType & data); @@ -15362,19 +10798,12 @@ class MTRScenesClusterEnhancedViewSceneResponseCallbackBridge { public: MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::Scenes::Commands::EnhancedViewSceneResponse::DecodableType & data); @@ -15383,19 +10812,13 @@ class MTRScenesClusterEnhancedViewSceneResponseCallbackBridge class MTRScenesClusterCopySceneResponseCallbackBridge : public MTRCallbackBridge { public: - MTRScenesClusterCopySceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRScenesClusterCopySceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRScenesClusterCopySceneResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRScenesClusterCopySceneResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRScenesClusterCopySceneResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::Clusters::Scenes::Commands::CopySceneResponse::DecodableType & data); }; @@ -15404,21 +10827,13 @@ class MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge { public: MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -15430,21 +10845,14 @@ class MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge { public: MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -15456,20 +10864,12 @@ class MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge { public: MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -15481,22 +10881,14 @@ class MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge { public: MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -15508,22 +10900,14 @@ class MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge { public: MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -15535,20 +10919,12 @@ class MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge { public: MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -15560,20 +10936,12 @@ class MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge { public: MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -15585,21 +10953,13 @@ class MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge { public: MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -15611,20 +10971,12 @@ class MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge { public: MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::DiagnosticLogs::Commands::RetrieveLogsResponse::DecodableType & data); @@ -15635,20 +10987,12 @@ class MTROperationalCredentialsClusterAttestationResponseCallbackBridge { public: MTROperationalCredentialsClusterAttestationResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROperationalCredentialsClusterAttestationResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROperationalCredentialsClusterAttestationResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROperationalCredentialsClusterAttestationResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -15660,22 +11004,14 @@ class MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge { public: MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -15687,20 +11023,12 @@ class MTROperationalCredentialsClusterCSRResponseCallbackBridge { public: MTROperationalCredentialsClusterCSRResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROperationalCredentialsClusterCSRResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROperationalCredentialsClusterCSRResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROperationalCredentialsClusterCSRResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::OperationalCredentials::Commands::CSRResponse::DecodableType & data); @@ -15711,20 +11039,12 @@ class MTROperationalCredentialsClusterNOCResponseCallbackBridge { public: MTROperationalCredentialsClusterNOCResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROperationalCredentialsClusterNOCResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROperationalCredentialsClusterNOCResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROperationalCredentialsClusterNOCResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::OperationalCredentials::Commands::NOCResponse::DecodableType & data); @@ -15735,20 +11055,12 @@ class MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge { public: MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -15760,22 +11072,14 @@ class MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge { public: MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -15787,20 +11091,12 @@ class MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge { public: MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::DoorLock::Commands::GetWeekDayScheduleResponse::DecodableType & data); @@ -15811,20 +11107,12 @@ class MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge { public: MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::DoorLock::Commands::GetYearDayScheduleResponse::DecodableType & data); @@ -15835,20 +11123,12 @@ class MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge { public: MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::DoorLock::Commands::GetHolidayScheduleResponse::DecodableType & data); @@ -15857,19 +11137,13 @@ class MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge class MTRDoorLockClusterGetUserResponseCallbackBridge : public MTRCallbackBridge { public: - MTRDoorLockClusterGetUserResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRDoorLockClusterGetUserResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRDoorLockClusterGetUserResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterGetUserResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockClusterGetUserResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::Clusters::DoorLock::Commands::GetUserResponse::DecodableType & data); }; @@ -15877,20 +11151,12 @@ class MTRDoorLockClusterSetCredentialResponseCallbackBridge : public MTRCallbackBridge { public: - MTRDoorLockClusterSetCredentialResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterSetCredentialResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRDoorLockClusterSetCredentialResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterSetCredentialResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRDoorLockClusterSetCredentialResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::DoorLock::Commands::SetCredentialResponse::DecodableType & data); @@ -15901,20 +11167,12 @@ class MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge { public: MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::DoorLock::Commands::GetCredentialStatusResponse::DecodableType & data); @@ -15925,20 +11183,12 @@ class MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge { public: MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::Thermostat::Commands::GetWeeklyScheduleResponse::DecodableType & data); @@ -15948,20 +11198,12 @@ class MTRChannelClusterChangeChannelResponseCallbackBridge : public MTRCallbackBridge { public: - MTRChannelClusterChangeChannelResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRChannelClusterChangeChannelResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRChannelClusterChangeChannelResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRChannelClusterChangeChannelResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRChannelClusterChangeChannelResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::Channel::Commands::ChangeChannelResponse::DecodableType & data); @@ -15972,20 +11214,12 @@ class MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge { public: MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -15996,20 +11230,12 @@ class MTRMediaPlaybackClusterPlaybackResponseCallbackBridge : public MTRCallbackBridge { public: - MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::MediaPlayback::Commands::PlaybackResponse::DecodableType & data); @@ -16018,20 +11244,13 @@ class MTRMediaPlaybackClusterPlaybackResponseCallbackBridge class MTRKeypadInputClusterSendKeyResponseCallbackBridge : public MTRCallbackBridge { public: - MTRKeypadInputClusterSendKeyResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRKeypadInputClusterSendKeyResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRKeypadInputClusterSendKeyResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRKeypadInputClusterSendKeyResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRKeypadInputClusterSendKeyResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::Clusters::KeypadInput::Commands::SendKeyResponse::DecodableType & data); }; @@ -16040,20 +11259,12 @@ class MTRContentLauncherClusterLaunchResponseCallbackBridge : public MTRCallbackBridge { public: - MTRContentLauncherClusterLaunchResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRContentLauncherClusterLaunchResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRContentLauncherClusterLaunchResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRContentLauncherClusterLaunchResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRContentLauncherClusterLaunchResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::ContentLauncher::Commands::LaunchResponse::DecodableType & data); @@ -16064,20 +11275,12 @@ class MTRApplicationLauncherClusterLauncherResponseCallbackBridge { public: MTRApplicationLauncherClusterLauncherResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationLauncherClusterLauncherResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRApplicationLauncherClusterLauncherResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRApplicationLauncherClusterLauncherResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::ApplicationLauncher::Commands::LauncherResponse::DecodableType & data); @@ -16088,19 +11291,12 @@ class MTRAccountLoginClusterGetSetupPINResponseCallbackBridge { public: MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::AccountLogin::Commands::GetSetupPINResponse::DecodableType & data); @@ -16111,19 +11307,12 @@ class MTRTestClusterClusterTestSpecificResponseCallbackBridge { public: MTRTestClusterClusterTestSpecificResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRTestClusterClusterTestSpecificResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterClusterTestSpecificResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRTestClusterClusterTestSpecificResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::TestCluster::Commands::TestSpecificResponse::DecodableType & data); @@ -16134,20 +11323,12 @@ class MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge { public: MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType & data); @@ -16158,20 +11339,12 @@ class MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge { public: MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -16183,21 +11356,13 @@ class MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge { public: MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -16209,20 +11374,12 @@ class MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge { public: MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -16233,20 +11390,12 @@ class MTRTestClusterClusterTestEnumsResponseCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterClusterTestEnumsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRTestClusterClusterTestEnumsResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRTestClusterClusterTestEnumsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterClusterTestEnumsResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRTestClusterClusterTestEnumsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::TestCluster::Commands::TestEnumsResponse::DecodableType & data); @@ -16257,20 +11406,12 @@ class MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge { public: MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -16282,22 +11423,14 @@ class MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge { public: MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -16307,20 +11440,13 @@ class MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge class MTRTestClusterClusterBooleanResponseCallbackBridge : public MTRCallbackBridge { public: - MTRTestClusterClusterBooleanResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRTestClusterClusterBooleanResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRTestClusterClusterBooleanResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRTestClusterClusterBooleanResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterClusterBooleanResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType & data); }; @@ -16330,19 +11456,12 @@ class MTRTestClusterClusterSimpleStructResponseCallbackBridge { public: MTRTestClusterClusterSimpleStructResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRTestClusterClusterSimpleStructResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterClusterSimpleStructResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRTestClusterClusterSimpleStructResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::Clusters::TestCluster::Commands::SimpleStructResponse::DecodableType & data); @@ -16353,20 +11472,12 @@ class MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge { public: MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -16378,22 +11489,14 @@ class MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge { public: MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -16405,20 +11508,12 @@ class MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge { public: MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Identify::IdentifyEffectIdentifier value); @@ -16429,16 +11524,9 @@ class MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscriptionBri { public: MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(queue, device, handler, action, true), + MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16453,22 +11541,14 @@ class MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge { public: MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -16479,16 +11559,9 @@ class MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscri { public: MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16503,20 +11576,12 @@ class MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge { public: MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Identify::IdentifyEffectVariant value); }; @@ -16526,16 +11591,9 @@ class MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscriptionBridge { public: MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(queue, device, handler, action, true), + MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16550,22 +11608,13 @@ class MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge { public: MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -16576,16 +11625,9 @@ class MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscripti { public: MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16600,20 +11642,12 @@ class MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge { public: MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Identify::IdentifyIdentifyType value); }; @@ -16623,16 +11657,9 @@ class MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptionBridge { public: MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16647,20 +11674,12 @@ class MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge { public: MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -16672,16 +11691,9 @@ class MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptio { public: MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16696,20 +11708,12 @@ class MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge { public: MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::OnOff::OnOffDelayedAllOffEffectVariant value); @@ -16720,16 +11724,9 @@ class MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSubscriptio { public: MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(queue, device, handler, action, true), + MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16744,23 +11741,14 @@ class MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBri { public: MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -16772,17 +11760,9 @@ class MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSub { public: MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16797,20 +11777,12 @@ class MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge { public: MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::OnOff::OnOffDyingLightEffectVariant value); @@ -16821,16 +11793,9 @@ class MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscriptionBr { public: MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(queue, device, handler, action, true), + MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16845,22 +11810,14 @@ class MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge { public: MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -16871,17 +11828,9 @@ class MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscr { public: MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16896,20 +11845,12 @@ class MTROnOffClusterOnOffEffectIdentifierAttributeCallbackBridge { public: MTROnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTROnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::OnOff::OnOffEffectIdentifier value); }; @@ -16918,18 +11859,10 @@ class MTROnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionBridge : public MTROnOffClusterOnOffEffectIdentifierAttributeCallbackBridge { public: - MTROnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTROnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(queue, device, handler, action, true), + MTROnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16944,20 +11877,12 @@ class MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackBridge { public: MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -16969,16 +11894,9 @@ class MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionB { public: MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -16993,18 +11911,12 @@ class MTROnOffClusterOnOffStartUpOnOffAttributeCallbackBridge { public: MTROnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTROnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTROnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::OnOff::OnOffStartUpOnOff value); }; @@ -17013,18 +11925,10 @@ class MTROnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge : public MTROnOffClusterOnOffStartUpOnOffAttributeCallbackBridge { public: - MTROnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTROnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTROnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(queue, device, handler, action, true), + MTROnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17039,20 +11943,12 @@ class MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge { public: MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -17063,16 +11959,9 @@ class MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridg { public: MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17085,19 +11974,12 @@ class MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridg class MTRLevelControlClusterMoveModeAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRLevelControlClusterMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRLevelControlClusterMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRLevelControlClusterMoveModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRLevelControlClusterMoveModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRLevelControlClusterMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::LevelControl::MoveMode value); }; @@ -17106,18 +11988,10 @@ class MTRLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge : public MTRLevelControlClusterMoveModeAttributeCallbackBridge { public: - MTRLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLevelControlClusterMoveModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLevelControlClusterMoveModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRLevelControlClusterMoveModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17132,20 +12006,12 @@ class MTRNullableLevelControlClusterMoveModeAttributeCallbackBridge { public: MTRNullableLevelControlClusterMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableLevelControlClusterMoveModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableLevelControlClusterMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableLevelControlClusterMoveModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -17156,16 +12022,9 @@ class MTRNullableLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge { public: MTRNullableLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableLevelControlClusterMoveModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableLevelControlClusterMoveModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableLevelControlClusterMoveModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17178,19 +12037,12 @@ class MTRNullableLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge class MTRLevelControlClusterStepModeAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRLevelControlClusterStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRLevelControlClusterStepModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRLevelControlClusterStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRLevelControlClusterStepModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRLevelControlClusterStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::LevelControl::StepMode value); }; @@ -17199,18 +12051,10 @@ class MTRLevelControlClusterStepModeAttributeCallbackSubscriptionBridge : public MTRLevelControlClusterStepModeAttributeCallbackBridge { public: - MTRLevelControlClusterStepModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRLevelControlClusterStepModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLevelControlClusterStepModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRLevelControlClusterStepModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRLevelControlClusterStepModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRLevelControlClusterStepModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17225,20 +12069,12 @@ class MTRNullableLevelControlClusterStepModeAttributeCallbackBridge { public: MTRNullableLevelControlClusterStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableLevelControlClusterStepModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableLevelControlClusterStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableLevelControlClusterStepModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -17249,16 +12085,9 @@ class MTRNullableLevelControlClusterStepModeAttributeCallbackSubscriptionBridge { public: MTRNullableLevelControlClusterStepModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableLevelControlClusterStepModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableLevelControlClusterStepModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableLevelControlClusterStepModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableLevelControlClusterStepModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17273,18 +12102,12 @@ class MTRAccessControlClusterAuthModeAttributeCallbackBridge { public: MTRAccessControlClusterAuthModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAccessControlClusterAuthModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRAccessControlClusterAuthModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRAccessControlClusterAuthModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::AccessControl::AuthMode value); }; @@ -17293,18 +12116,10 @@ class MTRAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge : public MTRAccessControlClusterAuthModeAttributeCallbackBridge { public: - MTRAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlClusterAuthModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlClusterAuthModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRAccessControlClusterAuthModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17319,20 +12134,12 @@ class MTRNullableAccessControlClusterAuthModeAttributeCallbackBridge { public: MTRNullableAccessControlClusterAuthModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableAccessControlClusterAuthModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableAccessControlClusterAuthModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableAccessControlClusterAuthModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -17343,16 +12150,9 @@ class MTRNullableAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge { public: MTRNullableAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAccessControlClusterAuthModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAccessControlClusterAuthModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableAccessControlClusterAuthModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17367,20 +12167,12 @@ class MTRAccessControlClusterChangeTypeEnumAttributeCallbackBridge { public: MTRAccessControlClusterChangeTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAccessControlClusterChangeTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAccessControlClusterChangeTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRAccessControlClusterChangeTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::AccessControl::ChangeTypeEnum value); }; @@ -17389,18 +12181,10 @@ class MTRAccessControlClusterChangeTypeEnumAttributeCallbackSubscriptionBridge : public MTRAccessControlClusterChangeTypeEnumAttributeCallbackBridge { public: - MTRAccessControlClusterChangeTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlClusterChangeTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAccessControlClusterChangeTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRAccessControlClusterChangeTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlClusterChangeTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRAccessControlClusterChangeTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17415,20 +12199,12 @@ class MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackBridge { public: MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -17440,16 +12216,9 @@ class MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackSubscription { public: MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17464,18 +12233,12 @@ class MTRAccessControlClusterPrivilegeAttributeCallbackBridge { public: MTRAccessControlClusterPrivilegeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAccessControlClusterPrivilegeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRAccessControlClusterPrivilegeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRAccessControlClusterPrivilegeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::AccessControl::Privilege value); }; @@ -17484,18 +12247,10 @@ class MTRAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridge : public MTRAccessControlClusterPrivilegeAttributeCallbackBridge { public: - MTRAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlClusterPrivilegeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAccessControlClusterPrivilegeAttributeCallbackBridge(queue, device, handler, action, true), + MTRAccessControlClusterPrivilegeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17510,20 +12265,12 @@ class MTRNullableAccessControlClusterPrivilegeAttributeCallbackBridge { public: MTRNullableAccessControlClusterPrivilegeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableAccessControlClusterPrivilegeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableAccessControlClusterPrivilegeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableAccessControlClusterPrivilegeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -17534,16 +12281,9 @@ class MTRNullableAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridg { public: MTRNullableAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAccessControlClusterPrivilegeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAccessControlClusterPrivilegeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableAccessControlClusterPrivilegeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17558,18 +12298,12 @@ class MTRActionsClusterActionErrorEnumAttributeCallbackBridge { public: MTRActionsClusterActionErrorEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRActionsClusterActionErrorEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRActionsClusterActionErrorEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRActionsClusterActionErrorEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Actions::ActionErrorEnum value); }; @@ -17578,18 +12312,10 @@ class MTRActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridge : public MTRActionsClusterActionErrorEnumAttributeCallbackBridge { public: - MTRActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsClusterActionErrorEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsClusterActionErrorEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRActionsClusterActionErrorEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17604,20 +12330,12 @@ class MTRNullableActionsClusterActionErrorEnumAttributeCallbackBridge { public: MTRNullableActionsClusterActionErrorEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableActionsClusterActionErrorEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableActionsClusterActionErrorEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableActionsClusterActionErrorEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -17628,16 +12346,9 @@ class MTRNullableActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridg { public: MTRNullableActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableActionsClusterActionErrorEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableActionsClusterActionErrorEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableActionsClusterActionErrorEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17652,18 +12363,12 @@ class MTRActionsClusterActionStateEnumAttributeCallbackBridge { public: MTRActionsClusterActionStateEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRActionsClusterActionStateEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRActionsClusterActionStateEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRActionsClusterActionStateEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Actions::ActionStateEnum value); }; @@ -17672,18 +12377,10 @@ class MTRActionsClusterActionStateEnumAttributeCallbackSubscriptionBridge : public MTRActionsClusterActionStateEnumAttributeCallbackBridge { public: - MTRActionsClusterActionStateEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRActionsClusterActionStateEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsClusterActionStateEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRActionsClusterActionStateEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsClusterActionStateEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRActionsClusterActionStateEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17698,20 +12395,12 @@ class MTRNullableActionsClusterActionStateEnumAttributeCallbackBridge { public: MTRNullableActionsClusterActionStateEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableActionsClusterActionStateEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableActionsClusterActionStateEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableActionsClusterActionStateEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -17722,16 +12411,9 @@ class MTRNullableActionsClusterActionStateEnumAttributeCallbackSubscriptionBridg { public: MTRNullableActionsClusterActionStateEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableActionsClusterActionStateEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableActionsClusterActionStateEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableActionsClusterActionStateEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableActionsClusterActionStateEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17746,18 +12428,12 @@ class MTRActionsClusterActionTypeEnumAttributeCallbackBridge { public: MTRActionsClusterActionTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRActionsClusterActionTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRActionsClusterActionTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRActionsClusterActionTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Actions::ActionTypeEnum value); }; @@ -17766,18 +12442,10 @@ class MTRActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge : public MTRActionsClusterActionTypeEnumAttributeCallbackBridge { public: - MTRActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsClusterActionTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsClusterActionTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRActionsClusterActionTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17792,20 +12460,12 @@ class MTRNullableActionsClusterActionTypeEnumAttributeCallbackBridge { public: MTRNullableActionsClusterActionTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableActionsClusterActionTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableActionsClusterActionTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableActionsClusterActionTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -17816,16 +12476,9 @@ class MTRNullableActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge { public: MTRNullableActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableActionsClusterActionTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableActionsClusterActionTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableActionsClusterActionTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17840,20 +12493,12 @@ class MTRActionsClusterEndpointListTypeEnumAttributeCallbackBridge { public: MTRActionsClusterEndpointListTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRActionsClusterEndpointListTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRActionsClusterEndpointListTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRActionsClusterEndpointListTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Actions::EndpointListTypeEnum value); }; @@ -17862,18 +12507,10 @@ class MTRActionsClusterEndpointListTypeEnumAttributeCallbackSubscriptionBridge : public MTRActionsClusterEndpointListTypeEnumAttributeCallbackBridge { public: - MTRActionsClusterEndpointListTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsClusterEndpointListTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRActionsClusterEndpointListTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRActionsClusterEndpointListTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRActionsClusterEndpointListTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRActionsClusterEndpointListTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17888,20 +12525,12 @@ class MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackBridge { public: MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -17913,16 +12542,9 @@ class MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackSubscription { public: MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17937,22 +12559,13 @@ class MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBr { public: MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::OtaSoftwareUpdateProvider::OTAApplyUpdateAction value); @@ -17963,17 +12576,9 @@ class MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackSu { public: MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -17989,21 +12594,16 @@ class MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCa public: MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, + OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -18015,18 +12615,9 @@ class MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCa { public: MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(queue, device, handler, action, - true), + MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18041,23 +12632,14 @@ class MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBri { public: MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::OtaSoftwareUpdateProvider::OTADownloadProtocol value); }; @@ -18067,17 +12649,9 @@ class MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackSub { public: MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18093,22 +12667,17 @@ class MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCal public: MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; + + MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -18119,17 +12688,9 @@ class MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCal { public: MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18144,22 +12705,14 @@ class MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge { public: MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::OtaSoftwareUpdateProvider::OTAQueryStatus value); }; @@ -18169,16 +12722,9 @@ class MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackSubscrip { public: MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18194,22 +12740,14 @@ class MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallback public: MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, + MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void @@ -18222,17 +12760,9 @@ class MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallback { public: MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18248,22 +12778,14 @@ class MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallback public: MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, + MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::OtaSoftwareUpdateRequestor::OTAAnnouncementReason value); @@ -18274,17 +12796,9 @@ class MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallback { public: MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18300,21 +12814,16 @@ class MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttribute public: MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : MTRCallbackBridge( - queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : + MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, + bool keepAlive = false) : MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -18326,18 +12835,9 @@ class MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttribute { public: MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(queue, device, handler, action, - true), + MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18352,22 +12852,13 @@ class MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBr { public: MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::OtaSoftwareUpdateRequestor::OTAChangeReasonEnum value); @@ -18378,17 +12869,9 @@ class MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackSu { public: MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18404,21 +12887,16 @@ class MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCa public: MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, + OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -18430,18 +12908,9 @@ class MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCa { public: MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(queue, device, handler, action, - true), + MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18456,23 +12925,14 @@ class MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBri { public: MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::OtaSoftwareUpdateRequestor::OTAUpdateStateEnum value); }; @@ -18482,17 +12942,9 @@ class MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSub { public: MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18508,22 +12960,17 @@ class MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCal public: MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; + + MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -18534,17 +12981,9 @@ class MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCal { public: MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18559,20 +12998,12 @@ class MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge { public: MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::TimeFormatLocalization::CalendarType value); @@ -18583,16 +13014,9 @@ class MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionB { public: MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18607,23 +13031,14 @@ class MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridg { public: MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -18635,17 +13050,9 @@ class MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubsc { public: MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18660,20 +13067,12 @@ class MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge { public: MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::TimeFormatLocalization::HourFormat value); @@ -18684,16 +13083,9 @@ class MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBri { public: MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(queue, device, handler, action, true), + MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18708,22 +13100,14 @@ class MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge { public: MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -18734,16 +13118,9 @@ class MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscri { public: MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18758,20 +13135,12 @@ class MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge { public: MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::UnitLocalization::TempUnit value); }; @@ -18780,18 +13149,10 @@ class MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge : public MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge { public: - MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(queue, device, handler, action, true), + MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18806,20 +13167,12 @@ class MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackBridge { public: MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -18831,16 +13184,9 @@ class MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBri { public: MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18855,20 +13201,12 @@ class MTRPowerSourceClusterBatChargeFaultAttributeCallbackBridge { public: MTRPowerSourceClusterBatChargeFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceClusterBatChargeFaultAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceClusterBatChargeFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceClusterBatChargeFaultAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::PowerSource::BatChargeFault value); }; @@ -18877,18 +13215,10 @@ class MTRPowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBridge : public MTRPowerSourceClusterBatChargeFaultAttributeCallbackBridge { public: - MTRPowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterBatChargeFaultAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRPowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterBatChargeFaultAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceClusterBatChargeFaultAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18903,20 +13233,12 @@ class MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackBridge { public: MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -18928,16 +13250,9 @@ class MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBr { public: MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -18952,20 +13267,12 @@ class MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge { public: MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::PowerSource::BatChargeLevel value); }; @@ -18974,18 +13281,10 @@ class MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge : public MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge { public: - MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19000,20 +13299,12 @@ class MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackBridge { public: MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -19025,16 +13316,9 @@ class MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBr { public: MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19049,40 +13333,24 @@ class MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge { public: MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::PowerSource::BatChargeState value); }; class MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge - : public MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge -{ -public: - MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + : public MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge +{ +public: + MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19097,20 +13365,12 @@ class MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackBridge { public: MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -19122,16 +13382,9 @@ class MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBr { public: MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19144,19 +13397,12 @@ class MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBr class MTRPowerSourceClusterBatFaultAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRPowerSourceClusterBatFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRPowerSourceClusterBatFaultAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRPowerSourceClusterBatFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceClusterBatFaultAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRPowerSourceClusterBatFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::PowerSource::BatFault value); }; @@ -19164,18 +13410,10 @@ class MTRPowerSourceClusterBatFaultAttributeCallbackBridge : public MTRCallbackB class MTRPowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge : public MTRPowerSourceClusterBatFaultAttributeCallbackBridge { public: - MTRPowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterBatFaultAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterBatFaultAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceClusterBatFaultAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19190,20 +13428,12 @@ class MTRNullablePowerSourceClusterBatFaultAttributeCallbackBridge { public: MTRNullablePowerSourceClusterBatFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullablePowerSourceClusterBatFaultAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullablePowerSourceClusterBatFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullablePowerSourceClusterBatFaultAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -19213,18 +13443,10 @@ class MTRNullablePowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge : public MTRNullablePowerSourceClusterBatFaultAttributeCallbackBridge { public: - MTRNullablePowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterBatFaultAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullablePowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRNullablePowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterBatFaultAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullablePowerSourceClusterBatFaultAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19239,20 +13461,12 @@ class MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge { public: MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::PowerSource::BatReplaceability value); }; @@ -19262,16 +13476,9 @@ class MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge { public: MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19286,20 +13493,12 @@ class MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackBridge { public: MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -19311,16 +13510,9 @@ class MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptio { public: MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19335,20 +13527,12 @@ class MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge { public: MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::PowerSource::PowerSourceStatus value); }; @@ -19358,16 +13542,9 @@ class MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge { public: MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19382,20 +13559,12 @@ class MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackBridge { public: MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -19407,16 +13576,9 @@ class MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptio { public: MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19431,20 +13593,12 @@ class MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge { public: MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::PowerSource::WiredCurrentType value); }; @@ -19453,18 +13607,10 @@ class MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge : public MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge { public: - MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19479,20 +13625,12 @@ class MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackBridge { public: MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -19504,16 +13642,9 @@ class MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackSubscription { public: MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19528,18 +13659,12 @@ class MTRPowerSourceClusterWiredFaultAttributeCallbackBridge { public: MTRPowerSourceClusterWiredFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRPowerSourceClusterWiredFaultAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPowerSourceClusterWiredFaultAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRPowerSourceClusterWiredFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::PowerSource::WiredFault value); }; @@ -19548,18 +13673,10 @@ class MTRPowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge : public MTRPowerSourceClusterWiredFaultAttributeCallbackBridge { public: - MTRPowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRPowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterWiredFaultAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRPowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPowerSourceClusterWiredFaultAttributeCallbackBridge(queue, device, handler, action, true), + MTRPowerSourceClusterWiredFaultAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19574,20 +13691,12 @@ class MTRNullablePowerSourceClusterWiredFaultAttributeCallbackBridge { public: MTRNullablePowerSourceClusterWiredFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullablePowerSourceClusterWiredFaultAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullablePowerSourceClusterWiredFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullablePowerSourceClusterWiredFaultAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -19598,16 +13707,9 @@ class MTRNullablePowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge { public: MTRNullablePowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterWiredFaultAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullablePowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePowerSourceClusterWiredFaultAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullablePowerSourceClusterWiredFaultAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19622,22 +13724,13 @@ class MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge { public: MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::GeneralCommissioning::CommissioningError value); }; @@ -19647,16 +13740,9 @@ class MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackSubscript { public: MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19671,22 +13757,13 @@ class MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackB { public: MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void @@ -19699,17 +13776,9 @@ class MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackS { public: MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19724,23 +13793,14 @@ class MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridg { public: MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::GeneralCommissioning::RegulatoryLocationType value); }; @@ -19750,17 +13810,9 @@ class MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubsc { public: MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19776,23 +13828,16 @@ class MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallb public: MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, + MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, + OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -19804,17 +13849,9 @@ class MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallb { public: MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19829,22 +13866,13 @@ class MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackB { public: MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::NetworkCommissioning::NetworkCommissioningStatus value); @@ -19855,17 +13883,9 @@ class MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackS { public: MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19881,21 +13901,16 @@ class MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeC public: MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, + OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -19907,18 +13922,9 @@ class MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeC { public: MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(queue, device, handler, action, - true), + MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19933,20 +13939,12 @@ class MTRNetworkCommissioningClusterWiFiBandAttributeCallbackBridge { public: MTRNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::NetworkCommissioning::WiFiBand value); }; @@ -19956,16 +13954,9 @@ class MTRNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptionBridge { public: MTRNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(queue, device, handler, action, true), + MTRNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -19980,20 +13971,12 @@ class MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackBridge { public: MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -20005,16 +13988,9 @@ class MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptio { public: MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20029,20 +14005,12 @@ class MTRDiagnosticLogsClusterLogsIntentAttributeCallbackBridge { public: MTRDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DiagnosticLogs::LogsIntent value); }; @@ -20051,18 +14019,10 @@ class MTRDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBridge : public MTRDiagnosticLogsClusterLogsIntentAttributeCallbackBridge { public: - MTRDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(queue, device, handler, action, true), + MTRDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20077,20 +14037,12 @@ class MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackBridge { public: MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -20102,16 +14054,9 @@ class MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBri { public: MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20126,20 +14071,12 @@ class MTRDiagnosticLogsClusterLogsStatusAttributeCallbackBridge { public: MTRDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DiagnosticLogs::LogsStatus value); }; @@ -20148,18 +14085,10 @@ class MTRDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBridge : public MTRDiagnosticLogsClusterLogsStatusAttributeCallbackBridge { public: - MTRDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20174,20 +14103,12 @@ class MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackBridge { public: MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -20199,16 +14120,9 @@ class MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBri { public: MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20223,20 +14137,12 @@ class MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge { public: MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DiagnosticLogs::LogsTransferProtocol value); @@ -20247,16 +14153,9 @@ class MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubscriptionB { public: MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(queue, device, handler, action, true), + MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20271,23 +14170,14 @@ class MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridg { public: MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -20299,17 +14189,9 @@ class MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubsc { public: MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20324,20 +14206,12 @@ class MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge { public: MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::GeneralDiagnostics::BootReasonType value); @@ -20348,16 +14222,9 @@ class MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscriptionBri { public: MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20372,22 +14239,14 @@ class MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge { public: MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -20398,16 +14257,9 @@ class MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscri { public: MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20422,20 +14274,12 @@ class MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge { public: MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::GeneralDiagnostics::HardwareFaultType value); @@ -20446,16 +14290,9 @@ class MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubscription { public: MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20470,23 +14307,14 @@ class MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBrid { public: MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -20498,17 +14326,9 @@ class MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubs { public: MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20523,20 +14343,12 @@ class MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge { public: MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::GeneralDiagnostics::InterfaceType value); @@ -20547,16 +14359,9 @@ class MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscriptionBrid { public: MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20571,22 +14376,14 @@ class MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge { public: MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -20597,16 +14394,9 @@ class MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscrip { public: MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20621,20 +14411,12 @@ class MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge { public: MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::GeneralDiagnostics::NetworkFaultType value); @@ -20645,16 +14427,9 @@ class MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubscriptionB { public: MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20669,23 +14444,14 @@ class MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridg { public: MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -20697,17 +14463,9 @@ class MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubsc { public: MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20722,20 +14480,12 @@ class MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge { public: MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::GeneralDiagnostics::RadioFaultType value); @@ -20746,16 +14496,9 @@ class MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscriptionBri { public: MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20770,22 +14513,14 @@ class MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge { public: MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -20796,16 +14531,9 @@ class MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscri { public: MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20820,20 +14548,12 @@ class MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge { public: MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ThreadNetworkDiagnostics::NetworkFault value); @@ -20844,16 +14564,9 @@ class MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptio { public: MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(queue, device, handler, action, true), + MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20868,23 +14581,14 @@ class MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBri { public: MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -20896,17 +14600,9 @@ class MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSub { public: MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20921,20 +14617,12 @@ class MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge { public: MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ThreadNetworkDiagnostics::RoutingRole value); @@ -20945,16 +14633,9 @@ class MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscription { public: MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(queue, device, handler, action, true), + MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -20969,23 +14650,14 @@ class MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBrid { public: MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -20997,17 +14669,9 @@ class MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubs { public: MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21022,22 +14686,13 @@ class MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackB { public: MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ThreadNetworkDiagnostics::ThreadConnectionStatus value); @@ -21048,17 +14703,9 @@ class MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackS { public: MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21074,21 +14721,16 @@ class MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeC public: MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, + OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -21100,18 +14742,9 @@ class MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeC { public: MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(queue, device, handler, action, - true), + MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21126,22 +14759,13 @@ class MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBr { public: MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::WiFiNetworkDiagnostics::AssociationFailureCause value); @@ -21152,17 +14776,9 @@ class MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackSu { public: MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(queue, device, handler, action, true), + MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21178,21 +14794,16 @@ class MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCa public: MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, + OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -21204,18 +14815,9 @@ class MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCa { public: MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(queue, device, handler, action, - true), + MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21230,20 +14832,12 @@ class MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge { public: MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::WiFiNetworkDiagnostics::SecurityType value); @@ -21254,16 +14848,9 @@ class MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionB { public: MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21278,23 +14865,14 @@ class MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridg { public: MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -21306,17 +14884,9 @@ class MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubsc { public: MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21331,23 +14901,14 @@ class MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridg { public: MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::WiFiNetworkDiagnostics::WiFiConnectionStatus value); }; @@ -21357,17 +14918,9 @@ class MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackSubsc { public: MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21383,23 +14936,16 @@ class MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallb public: MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, + MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, + OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -21411,17 +14957,9 @@ class MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallb { public: MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21436,22 +14974,13 @@ class MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge { public: MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::WiFiNetworkDiagnostics::WiFiVersionType value); }; @@ -21461,16 +14990,9 @@ class MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscripti { public: MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21485,22 +15007,13 @@ class MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBr { public: MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void @@ -21513,17 +15026,9 @@ class MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSu { public: MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21538,22 +15043,13 @@ class MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge { public: MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::EthernetNetworkDiagnostics::PHYRateType value); }; @@ -21563,16 +15059,9 @@ class MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscripti { public: MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21587,22 +15076,13 @@ class MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBr { public: MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void @@ -21615,17 +15095,9 @@ class MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSu { public: MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21640,20 +15112,12 @@ class MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge { public: MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::TimeSynchronization::GranularityEnum value); @@ -21664,16 +15128,9 @@ class MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackSubscriptionB { public: MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21688,23 +15145,14 @@ class MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackBridg { public: MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -21716,17 +15164,9 @@ class MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackSubsc { public: MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21741,20 +15181,12 @@ class MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge { public: MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::TimeSynchronization::TimeSourceEnum value); @@ -21765,16 +15197,9 @@ class MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscriptionBr { public: MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21789,22 +15214,14 @@ class MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge { public: MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -21815,17 +15232,9 @@ class MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscr { public: MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21841,22 +15250,17 @@ class MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCall public: MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; + + MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::app::Clusters::AdministratorCommissioning::CommissioningWindowStatus value); }; @@ -21865,17 +15269,9 @@ class MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCall { public: MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21891,21 +15287,16 @@ class MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttri public: MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : MTRCallbackBridge( - queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : + MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, + bool keepAlive = false) : MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -21917,18 +15308,9 @@ class MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttri { public: MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(queue, nodeID, controller, - handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(queue, device, handler, action, - true), + MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21943,20 +15325,12 @@ class MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge { public: MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::AdministratorCommissioning::StatusCode value); @@ -21967,16 +15341,9 @@ class MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackSubscriptio { public: MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(queue, device, handler, action, true), + MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -21991,23 +15358,14 @@ class MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackBri { public: MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -22019,17 +15377,9 @@ class MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackSub { public: MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22044,23 +15394,14 @@ class MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackBrid { public: MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::OperationalCredentials::OperationalCertStatus value); }; @@ -22070,17 +15411,9 @@ class MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackSubs { public: MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22096,22 +15429,17 @@ class MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCall public: MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; + + MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -22122,17 +15450,9 @@ class MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCall { public: MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22147,22 +15467,14 @@ class MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge { public: MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::GroupKeyManagement::GroupKeySecurityPolicy value); }; @@ -22172,16 +15484,9 @@ class MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackSubscri { public: MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(queue, device, handler, action, true), + MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22197,22 +15502,15 @@ class MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbac public: MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, + MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void @@ -22225,17 +15523,9 @@ class MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbac { public: MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22248,19 +15538,12 @@ class MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbac class MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlAlarmCode value); }; @@ -22268,18 +15551,10 @@ class MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge : public MTRCallbackB class MTRDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge { public: - MTRDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22294,20 +15569,12 @@ class MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -22317,18 +15584,10 @@ class MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge : public MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackBridge { public: - MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22343,20 +15602,12 @@ class MTRDoorLockClusterDlCredentialRuleAttributeCallbackBridge { public: MTRDoorLockClusterDlCredentialRuleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlCredentialRuleAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlCredentialRuleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockClusterDlCredentialRuleAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlCredentialRule value); }; @@ -22365,18 +15616,10 @@ class MTRDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlCredentialRuleAttributeCallbackBridge { public: - MTRDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlCredentialRuleAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlCredentialRuleAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlCredentialRuleAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22391,20 +15634,12 @@ class MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -22416,16 +15651,9 @@ class MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBri { public: MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22440,20 +15668,12 @@ class MTRDoorLockClusterDlCredentialTypeAttributeCallbackBridge { public: MTRDoorLockClusterDlCredentialTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlCredentialTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlCredentialTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockClusterDlCredentialTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlCredentialType value); }; @@ -22462,18 +15682,10 @@ class MTRDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlCredentialTypeAttributeCallbackBridge { public: - MTRDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlCredentialTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlCredentialTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlCredentialTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22488,20 +15700,12 @@ class MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -22513,16 +15717,9 @@ class MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBri { public: MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22537,20 +15734,12 @@ class MTRDoorLockClusterDlDataOperationTypeAttributeCallbackBridge { public: MTRDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlDataOperationType value); }; @@ -22559,18 +15748,10 @@ class MTRDoorLockClusterDlDataOperationTypeAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlDataOperationTypeAttributeCallbackBridge { public: - MTRDoorLockClusterDlDataOperationTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTRDoorLockClusterDlDataOperationTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlDataOperationTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22585,20 +15766,12 @@ class MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -22610,16 +15783,9 @@ class MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackSubscription { public: MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22632,38 +15798,23 @@ class MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackSubscription class MTRDoorLockClusterDlDoorStateAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDoorLockClusterDlDoorStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + MTRDoorLockClusterDlDoorStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlDoorStateAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockClusterDlDoorStateAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRDoorLockClusterDlDoorStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlDoorState value); }; class MTRDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlDoorStateAttributeCallbackBridge { -public: - MTRDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlDoorStateAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, +public: + MTRDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlDoorStateAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlDoorStateAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22678,20 +15829,12 @@ class MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -22701,18 +15844,10 @@ class MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge : public MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge { public: - MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22727,18 +15862,12 @@ class MTRDoorLockClusterDlLockDataTypeAttributeCallbackBridge { public: MTRDoorLockClusterDlLockDataTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterDlLockDataTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlLockDataTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRDoorLockClusterDlLockDataTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlLockDataType value); }; @@ -22747,18 +15876,10 @@ class MTRDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlLockDataTypeAttributeCallbackBridge { public: - MTRDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlLockDataTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlLockDataTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlLockDataTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22773,20 +15894,12 @@ class MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -22797,16 +15910,9 @@ class MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridg { public: MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22821,20 +15927,12 @@ class MTRDoorLockClusterDlLockOperationTypeAttributeCallbackBridge { public: MTRDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlLockOperationType value); }; @@ -22843,18 +15941,10 @@ class MTRDoorLockClusterDlLockOperationTypeAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlLockOperationTypeAttributeCallbackBridge { public: - MTRDoorLockClusterDlLockOperationTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlLockOperationTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRDoorLockClusterDlLockOperationTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22869,20 +15959,12 @@ class MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -22894,16 +15976,9 @@ class MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackSubscription { public: MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22916,19 +15991,12 @@ class MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackSubscription class MTRDoorLockClusterDlLockStateAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDoorLockClusterDlLockStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterDlLockStateAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRDoorLockClusterDlLockStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlLockStateAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRDoorLockClusterDlLockStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlLockState value); }; @@ -22936,18 +16004,10 @@ class MTRDoorLockClusterDlLockStateAttributeCallbackBridge : public MTRCallbackB class MTRDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlLockStateAttributeCallbackBridge { public: - MTRDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlLockStateAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlLockStateAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlLockStateAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -22962,20 +16022,12 @@ class MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -22985,18 +16037,10 @@ class MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge : public MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge { public: - MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23009,38 +16053,23 @@ class MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge class MTRDoorLockClusterDlLockTypeAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlLockType value); }; class MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlLockTypeAttributeCallbackBridge { public: - MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23055,20 +16084,12 @@ class MTRNullableDoorLockClusterDlLockTypeAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlLockTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlLockTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlLockTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlLockTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -23078,18 +16099,10 @@ class MTRNullableDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge : public MTRNullableDoorLockClusterDlLockTypeAttributeCallbackBridge { public: - MTRNullableDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTRNullableDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlLockTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlLockTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlLockTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23104,20 +16117,12 @@ class MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge { public: MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlOperatingMode value); }; @@ -23126,18 +16131,10 @@ class MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge { public: - MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23152,20 +16149,12 @@ class MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -23177,16 +16166,9 @@ class MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBrid { public: MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23201,20 +16183,12 @@ class MTRDoorLockClusterDlOperationErrorAttributeCallbackBridge { public: MTRDoorLockClusterDlOperationErrorAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlOperationErrorAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlOperationErrorAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockClusterDlOperationErrorAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlOperationError value); }; @@ -23223,18 +16197,10 @@ class MTRDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlOperationErrorAttributeCallbackBridge { public: - MTRDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlOperationErrorAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlOperationErrorAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlOperationErrorAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23249,20 +16215,12 @@ class MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -23274,16 +16232,9 @@ class MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBri { public: MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23298,20 +16249,12 @@ class MTRDoorLockClusterDlOperationSourceAttributeCallbackBridge { public: MTRDoorLockClusterDlOperationSourceAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlOperationSourceAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlOperationSourceAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterDlOperationSourceAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlOperationSource value); }; @@ -23320,18 +16263,10 @@ class MTRDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlOperationSourceAttributeCallbackBridge { public: - MTRDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlOperationSourceAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlOperationSourceAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlOperationSourceAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23346,20 +16281,12 @@ class MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -23371,16 +16298,9 @@ class MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBr { public: MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23393,37 +16313,23 @@ class MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBr class MTRDoorLockClusterDlStatusAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDoorLockClusterDlStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRDoorLockClusterDlStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRDoorLockClusterDlStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockClusterDlStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlStatus value); }; class MTRDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlStatusAttributeCallbackBridge { public: - MTRDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23438,20 +16344,12 @@ class MTRNullableDoorLockClusterDlStatusAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableDoorLockClusterDlStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); }; @@ -23460,18 +16358,10 @@ class MTRNullableDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge : public MTRNullableDoorLockClusterDlStatusAttributeCallbackBridge { public: - MTRNullableDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23484,19 +16374,12 @@ class MTRNullableDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge class MTRDoorLockClusterDlUserStatusAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDoorLockClusterDlUserStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterDlUserStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + MTRDoorLockClusterDlUserStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlUserStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRDoorLockClusterDlUserStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlUserStatus value); }; @@ -23505,18 +16388,10 @@ class MTRDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlUserStatusAttributeCallbackBridge { public: - MTRDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlUserStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlUserStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlUserStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23531,20 +16406,12 @@ class MTRNullableDoorLockClusterDlUserStatusAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlUserStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlUserStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlUserStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlUserStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -23555,16 +16422,9 @@ class MTRNullableDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge { public: MTRNullableDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlUserStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlUserStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlUserStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23577,38 +16437,23 @@ class MTRNullableDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge class MTRDoorLockClusterDlUserTypeAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRDoorLockClusterDlUserTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRDoorLockClusterDlUserTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRDoorLockClusterDlUserTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDlUserTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockClusterDlUserTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DlUserType value); }; class MTRDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDlUserTypeAttributeCallbackBridge { public: - MTRDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlUserTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDlUserTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDlUserTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23623,20 +16468,12 @@ class MTRNullableDoorLockClusterDlUserTypeAttributeCallbackBridge { public: MTRNullableDoorLockClusterDlUserTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDlUserTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDlUserTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDlUserTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -23646,18 +16483,10 @@ class MTRNullableDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge : public MTRNullableDoorLockClusterDlUserTypeAttributeCallbackBridge { public: - MTRNullableDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, + MTRNullableDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlUserTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDlUserTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDlUserTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23672,20 +16501,12 @@ class MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge { public: MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DoorLockOperationEventCode value); @@ -23696,16 +16517,9 @@ class MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubscriptionB { public: MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23720,23 +16534,14 @@ class MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridg { public: MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -23748,17 +16553,9 @@ class MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubsc { public: MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23773,20 +16570,12 @@ class MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge { public: MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DoorLockProgrammingEventCode value); @@ -23797,16 +16586,9 @@ class MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSubscriptio { public: MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23821,23 +16603,14 @@ class MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBri { public: MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -23849,17 +16622,9 @@ class MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSub { public: MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23874,20 +16639,12 @@ class MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge { public: MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DoorLockSetPinOrIdStatus value); @@ -23898,16 +16655,9 @@ class MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscriptionBri { public: MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23922,22 +16672,14 @@ class MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge { public: MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -23948,16 +16690,9 @@ class MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscri { public: MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -23972,20 +16707,12 @@ class MTRDoorLockClusterDoorLockUserStatusAttributeCallbackBridge { public: MTRDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DoorLockUserStatus value); }; @@ -23994,18 +16721,10 @@ class MTRDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDoorLockUserStatusAttributeCallbackBridge { public: - MTRDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24020,20 +16739,12 @@ class MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackBridge { public: MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -24045,16 +16756,9 @@ class MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionB { public: MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24069,20 +16773,12 @@ class MTRDoorLockClusterDoorLockUserTypeAttributeCallbackBridge { public: MTRDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::DoorLock::DoorLockUserType value); }; @@ -24091,18 +16787,10 @@ class MTRDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBridge : public MTRDoorLockClusterDoorLockUserTypeAttributeCallbackBridge { public: - MTRDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24117,20 +16805,12 @@ class MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackBridge { public: MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -24142,16 +16822,9 @@ class MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBri { public: MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24166,20 +16839,12 @@ class MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge { public: MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::WindowCovering::EndProductType value); }; @@ -24189,16 +16854,9 @@ class MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge { public: MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24213,20 +16871,12 @@ class MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackBridge { public: MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -24238,16 +16888,9 @@ class MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptio { public: MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24260,38 +16903,23 @@ class MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptio class MTRWindowCoveringClusterTypeAttributeCallbackBridge : public MTRCallbackBridge { public: - MTRWindowCoveringClusterTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRLocalActionBlock action, + MTRWindowCoveringClusterTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; + + MTRWindowCoveringClusterTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRWindowCoveringClusterTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRWindowCoveringClusterTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, chip::app::Clusters::WindowCovering::Type value); }; class MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge : public MTRWindowCoveringClusterTypeAttributeCallbackBridge { public: - MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringClusterTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRWindowCoveringClusterTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRWindowCoveringClusterTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24306,20 +16934,12 @@ class MTRNullableWindowCoveringClusterTypeAttributeCallbackBridge { public: MTRNullableWindowCoveringClusterTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableWindowCoveringClusterTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableWindowCoveringClusterTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableWindowCoveringClusterTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -24329,18 +16949,10 @@ class MTRNullableWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge : public MTRNullableWindowCoveringClusterTypeAttributeCallbackBridge { public: - MTRNullableWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWindowCoveringClusterTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRNullableWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableWindowCoveringClusterTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableWindowCoveringClusterTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24355,23 +16967,14 @@ class MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridg { public: MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::PumpConfigurationAndControl::PumpControlMode value); }; @@ -24381,17 +16984,9 @@ class MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubsc { public: MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24407,23 +17002,16 @@ class MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallb public: MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, + MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, action, + OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -24435,17 +17023,9 @@ class MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallb { public: MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24460,23 +17040,14 @@ class MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBri { public: MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::PumpConfigurationAndControl::PumpOperationMode value); }; @@ -24486,17 +17057,9 @@ class MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSub { public: MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24512,22 +17075,17 @@ class MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCal public: MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; + + MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; - static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -24538,17 +17096,9 @@ class MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCal { public: MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24563,20 +17113,12 @@ class MTRThermostatClusterSetpointAdjustModeAttributeCallbackBridge { public: MTRThermostatClusterSetpointAdjustModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThermostatClusterSetpointAdjustModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThermostatClusterSetpointAdjustModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThermostatClusterSetpointAdjustModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Thermostat::SetpointAdjustMode value); }; @@ -24586,16 +17128,9 @@ class MTRThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptionBridge { public: MTRThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatClusterSetpointAdjustModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatClusterSetpointAdjustModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRThermostatClusterSetpointAdjustModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24610,20 +17145,12 @@ class MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackBridge { public: MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -24635,16 +17162,9 @@ class MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptio { public: MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24659,20 +17179,12 @@ class MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge { public: MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Thermostat::ThermostatControlSequence value); @@ -24683,16 +17195,9 @@ class MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscription { public: MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(queue, device, handler, action, true), + MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24707,23 +17212,14 @@ class MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackBrid { public: MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -24735,17 +17231,9 @@ class MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackSubs { public: MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24760,20 +17248,12 @@ class MTRThermostatClusterThermostatRunningModeAttributeCallbackBridge { public: MTRThermostatClusterThermostatRunningModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThermostatClusterThermostatRunningModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThermostatClusterThermostatRunningModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThermostatClusterThermostatRunningModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Thermostat::ThermostatRunningMode value); @@ -24784,16 +17264,9 @@ class MTRThermostatClusterThermostatRunningModeAttributeCallbackSubscriptionBrid { public: MTRThermostatClusterThermostatRunningModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatClusterThermostatRunningModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThermostatClusterThermostatRunningModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatClusterThermostatRunningModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRThermostatClusterThermostatRunningModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24808,22 +17281,14 @@ class MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackBridge { public: MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -24834,16 +17299,9 @@ class MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackSubscrip { public: MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24858,20 +17316,12 @@ class MTRThermostatClusterThermostatSystemModeAttributeCallbackBridge { public: MTRThermostatClusterThermostatSystemModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRThermostatClusterThermostatSystemModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRThermostatClusterThermostatSystemModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRThermostatClusterThermostatSystemModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Thermostat::ThermostatSystemMode value); }; @@ -24881,16 +17331,9 @@ class MTRThermostatClusterThermostatSystemModeAttributeCallbackSubscriptionBridg { public: MTRThermostatClusterThermostatSystemModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatClusterThermostatSystemModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRThermostatClusterThermostatSystemModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThermostatClusterThermostatSystemModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRThermostatClusterThermostatSystemModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24905,22 +17348,13 @@ class MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackBridge { public: MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -24931,16 +17365,9 @@ class MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackSubscript { public: MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -24955,20 +17382,12 @@ class MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge { public: MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::FanControl::FanModeSequenceType value); }; @@ -24978,16 +17397,9 @@ class MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge { public: MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25002,22 +17414,13 @@ class MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackBridge { public: MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -25028,16 +17431,9 @@ class MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackSubscripti { public: MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25052,18 +17448,12 @@ class MTRFanControlClusterFanModeTypeAttributeCallbackBridge { public: MTRFanControlClusterFanModeTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFanControlClusterFanModeTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRFanControlClusterFanModeTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRFanControlClusterFanModeTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::FanControl::FanModeType value); }; @@ -25072,18 +17462,10 @@ class MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge : public MTRFanControlClusterFanModeTypeAttributeCallbackBridge { public: - MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFanControlClusterFanModeTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFanControlClusterFanModeTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRFanControlClusterFanModeTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25098,20 +17480,12 @@ class MTRNullableFanControlClusterFanModeTypeAttributeCallbackBridge { public: MTRNullableFanControlClusterFanModeTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableFanControlClusterFanModeTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableFanControlClusterFanModeTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableFanControlClusterFanModeTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -25122,16 +17496,9 @@ class MTRNullableFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge { public: MTRNullableFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableFanControlClusterFanModeTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableFanControlClusterFanModeTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableFanControlClusterFanModeTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25146,20 +17513,12 @@ class MTRColorControlClusterColorLoopActionAttributeCallbackBridge { public: MTRColorControlClusterColorLoopActionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRColorControlClusterColorLoopActionAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlClusterColorLoopActionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRColorControlClusterColorLoopActionAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ColorControl::ColorLoopAction value); }; @@ -25168,18 +17527,10 @@ class MTRColorControlClusterColorLoopActionAttributeCallbackSubscriptionBridge : public MTRColorControlClusterColorLoopActionAttributeCallbackBridge { public: - MTRColorControlClusterColorLoopActionAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterColorLoopActionAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRColorControlClusterColorLoopActionAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRColorControlClusterColorLoopActionAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterColorLoopActionAttributeCallbackBridge(queue, device, handler, action, true), + MTRColorControlClusterColorLoopActionAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25194,20 +17545,12 @@ class MTRNullableColorControlClusterColorLoopActionAttributeCallbackBridge { public: MTRNullableColorControlClusterColorLoopActionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableColorControlClusterColorLoopActionAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableColorControlClusterColorLoopActionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableColorControlClusterColorLoopActionAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -25219,16 +17562,9 @@ class MTRNullableColorControlClusterColorLoopActionAttributeCallbackSubscription { public: MTRNullableColorControlClusterColorLoopActionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterColorLoopActionAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableColorControlClusterColorLoopActionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterColorLoopActionAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableColorControlClusterColorLoopActionAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25243,20 +17579,12 @@ class MTRColorControlClusterColorLoopDirectionAttributeCallbackBridge { public: MTRColorControlClusterColorLoopDirectionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRColorControlClusterColorLoopDirectionAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlClusterColorLoopDirectionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRColorControlClusterColorLoopDirectionAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ColorControl::ColorLoopDirection value); }; @@ -25266,16 +17594,9 @@ class MTRColorControlClusterColorLoopDirectionAttributeCallbackSubscriptionBridg { public: MTRColorControlClusterColorLoopDirectionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterColorLoopDirectionAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRColorControlClusterColorLoopDirectionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterColorLoopDirectionAttributeCallbackBridge(queue, device, handler, action, true), + MTRColorControlClusterColorLoopDirectionAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25290,22 +17611,13 @@ class MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackBridge { public: MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -25316,16 +17628,9 @@ class MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackSubscript { public: MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25340,18 +17645,12 @@ class MTRColorControlClusterColorModeAttributeCallbackBridge { public: MTRColorControlClusterColorModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRColorControlClusterColorModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRColorControlClusterColorModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRColorControlClusterColorModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ColorControl::ColorMode value); }; @@ -25360,18 +17659,10 @@ class MTRColorControlClusterColorModeAttributeCallbackSubscriptionBridge : public MTRColorControlClusterColorModeAttributeCallbackBridge { public: - MTRColorControlClusterColorModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlClusterColorModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterColorModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRColorControlClusterColorModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterColorModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRColorControlClusterColorModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25386,20 +17677,12 @@ class MTRNullableColorControlClusterColorModeAttributeCallbackBridge { public: MTRNullableColorControlClusterColorModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableColorControlClusterColorModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableColorControlClusterColorModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableColorControlClusterColorModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -25410,16 +17693,9 @@ class MTRNullableColorControlClusterColorModeAttributeCallbackSubscriptionBridge { public: MTRNullableColorControlClusterColorModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterColorModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableColorControlClusterColorModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterColorModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableColorControlClusterColorModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25434,20 +17710,12 @@ class MTRColorControlClusterHueDirectionAttributeCallbackBridge { public: MTRColorControlClusterHueDirectionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRColorControlClusterHueDirectionAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlClusterHueDirectionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRColorControlClusterHueDirectionAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ColorControl::HueDirection value); }; @@ -25456,18 +17724,10 @@ class MTRColorControlClusterHueDirectionAttributeCallbackSubscriptionBridge : public MTRColorControlClusterHueDirectionAttributeCallbackBridge { public: - MTRColorControlClusterHueDirectionAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlClusterHueDirectionAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterHueDirectionAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRColorControlClusterHueDirectionAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterHueDirectionAttributeCallbackBridge(queue, device, handler, action, true), + MTRColorControlClusterHueDirectionAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25482,20 +17742,12 @@ class MTRNullableColorControlClusterHueDirectionAttributeCallbackBridge { public: MTRNullableColorControlClusterHueDirectionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableColorControlClusterHueDirectionAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableColorControlClusterHueDirectionAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableColorControlClusterHueDirectionAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -25507,16 +17759,9 @@ class MTRNullableColorControlClusterHueDirectionAttributeCallbackSubscriptionBri { public: MTRNullableColorControlClusterHueDirectionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterHueDirectionAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableColorControlClusterHueDirectionAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterHueDirectionAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableColorControlClusterHueDirectionAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25531,20 +17776,12 @@ class MTRColorControlClusterHueMoveModeAttributeCallbackBridge { public: MTRColorControlClusterHueMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRColorControlClusterHueMoveModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRColorControlClusterHueMoveModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRColorControlClusterHueMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ColorControl::HueMoveMode value); }; @@ -25553,18 +17790,10 @@ class MTRColorControlClusterHueMoveModeAttributeCallbackSubscriptionBridge : public MTRColorControlClusterHueMoveModeAttributeCallbackBridge { public: - MTRColorControlClusterHueMoveModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlClusterHueMoveModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterHueMoveModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRColorControlClusterHueMoveModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterHueMoveModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRColorControlClusterHueMoveModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25579,20 +17808,12 @@ class MTRNullableColorControlClusterHueMoveModeAttributeCallbackBridge { public: MTRNullableColorControlClusterHueMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableColorControlClusterHueMoveModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableColorControlClusterHueMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableColorControlClusterHueMoveModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -25604,16 +17825,9 @@ class MTRNullableColorControlClusterHueMoveModeAttributeCallbackSubscriptionBrid { public: MTRNullableColorControlClusterHueMoveModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterHueMoveModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableColorControlClusterHueMoveModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterHueMoveModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableColorControlClusterHueMoveModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25628,20 +17842,12 @@ class MTRColorControlClusterHueStepModeAttributeCallbackBridge { public: MTRColorControlClusterHueStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRColorControlClusterHueStepModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRColorControlClusterHueStepModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRColorControlClusterHueStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ColorControl::HueStepMode value); }; @@ -25650,18 +17856,10 @@ class MTRColorControlClusterHueStepModeAttributeCallbackSubscriptionBridge : public MTRColorControlClusterHueStepModeAttributeCallbackBridge { public: - MTRColorControlClusterHueStepModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlClusterHueStepModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterHueStepModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRColorControlClusterHueStepModeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterHueStepModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRColorControlClusterHueStepModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25676,20 +17874,12 @@ class MTRNullableColorControlClusterHueStepModeAttributeCallbackBridge { public: MTRNullableColorControlClusterHueStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableColorControlClusterHueStepModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableColorControlClusterHueStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableColorControlClusterHueStepModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -25701,16 +17891,9 @@ class MTRNullableColorControlClusterHueStepModeAttributeCallbackSubscriptionBrid { public: MTRNullableColorControlClusterHueStepModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterHueStepModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableColorControlClusterHueStepModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterHueStepModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableColorControlClusterHueStepModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25725,20 +17908,12 @@ class MTRColorControlClusterSaturationMoveModeAttributeCallbackBridge { public: MTRColorControlClusterSaturationMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRColorControlClusterSaturationMoveModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlClusterSaturationMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRColorControlClusterSaturationMoveModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ColorControl::SaturationMoveMode value); }; @@ -25748,16 +17923,9 @@ class MTRColorControlClusterSaturationMoveModeAttributeCallbackSubscriptionBridg { public: MTRColorControlClusterSaturationMoveModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterSaturationMoveModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRColorControlClusterSaturationMoveModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterSaturationMoveModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRColorControlClusterSaturationMoveModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25772,22 +17940,13 @@ class MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackBridge { public: MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -25798,16 +17957,9 @@ class MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackSubscript { public: MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25822,20 +17974,12 @@ class MTRColorControlClusterSaturationStepModeAttributeCallbackBridge { public: MTRColorControlClusterSaturationStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRColorControlClusterSaturationStepModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRColorControlClusterSaturationStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRColorControlClusterSaturationStepModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ColorControl::SaturationStepMode value); }; @@ -25845,16 +17989,9 @@ class MTRColorControlClusterSaturationStepModeAttributeCallbackSubscriptionBridg { public: MTRColorControlClusterSaturationStepModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterSaturationStepModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRColorControlClusterSaturationStepModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRColorControlClusterSaturationStepModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRColorControlClusterSaturationStepModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25869,22 +18006,13 @@ class MTRNullableColorControlClusterSaturationStepModeAttributeCallbackBridge { public: MTRNullableColorControlClusterSaturationStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableColorControlClusterSaturationStepModeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableColorControlClusterSaturationStepModeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableColorControlClusterSaturationStepModeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -25895,16 +18023,9 @@ class MTRNullableColorControlClusterSaturationStepModeAttributeCallbackSubscript { public: MTRNullableColorControlClusterSaturationStepModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterSaturationStepModeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableColorControlClusterSaturationStepModeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableColorControlClusterSaturationStepModeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableColorControlClusterSaturationStepModeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25919,22 +18040,13 @@ class MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge { public: MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::IlluminanceMeasurement::LightSensorType value); }; @@ -25944,16 +18056,9 @@ class MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSubscripti { public: MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -25968,22 +18073,13 @@ class MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBr { public: MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void @@ -25996,17 +18092,9 @@ class MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSu { public: MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26021,20 +18109,12 @@ class MTRChannelClusterChannelStatusEnumAttributeCallbackBridge { public: MTRChannelClusterChannelStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRChannelClusterChannelStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRChannelClusterChannelStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRChannelClusterChannelStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Channel::ChannelStatusEnum value); }; @@ -26043,18 +18123,10 @@ class MTRChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBridge : public MTRChannelClusterChannelStatusEnumAttributeCallbackBridge { public: - MTRChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelClusterChannelStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelClusterChannelStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRChannelClusterChannelStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26069,20 +18141,12 @@ class MTRNullableChannelClusterChannelStatusEnumAttributeCallbackBridge { public: MTRNullableChannelClusterChannelStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableChannelClusterChannelStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableChannelClusterChannelStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableChannelClusterChannelStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -26094,16 +18158,9 @@ class MTRNullableChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBri { public: MTRNullableChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableChannelClusterChannelStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableChannelClusterChannelStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableChannelClusterChannelStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26118,20 +18175,12 @@ class MTRChannelClusterLineupInfoTypeEnumAttributeCallbackBridge { public: MTRChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::Channel::LineupInfoTypeEnum value); }; @@ -26140,18 +18189,10 @@ class MTRChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBridge : public MTRChannelClusterLineupInfoTypeEnumAttributeCallbackBridge { public: - MTRChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26166,20 +18207,12 @@ class MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackBridge { public: MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -26191,16 +18224,9 @@ class MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBr { public: MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26215,22 +18241,14 @@ class MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge { public: MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::TargetNavigator::TargetNavigatorStatusEnum value); }; @@ -26240,16 +18258,9 @@ class MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackSubscri { public: MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26265,22 +18276,15 @@ class MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbac public: MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, + MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void @@ -26293,17 +18297,9 @@ class MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbac { public: MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26318,20 +18314,12 @@ class MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge { public: MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::MediaPlayback::MediaPlaybackStatusEnum value); @@ -26339,19 +18327,12 @@ class MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge class MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSubscriptionBridge : public MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge -{ -public: - MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - +{ +public: MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26366,23 +18347,14 @@ class MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBri { public: MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; - - MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, @@ -26394,17 +18366,9 @@ class MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSub { public: MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26419,20 +18383,12 @@ class MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge { public: MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::MediaPlayback::PlaybackStateEnum value); }; @@ -26442,16 +18398,9 @@ class MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridg { public: MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26466,22 +18415,13 @@ class MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge { public: MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -26492,16 +18432,9 @@ class MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscript { public: MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26516,20 +18449,12 @@ class MTRMediaInputClusterInputTypeEnumAttributeCallbackBridge { public: MTRMediaInputClusterInputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRMediaInputClusterInputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRMediaInputClusterInputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRMediaInputClusterInputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::MediaInput::InputTypeEnum value); }; @@ -26538,18 +18463,10 @@ class MTRMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBridge : public MTRMediaInputClusterInputTypeEnumAttributeCallbackBridge { public: - MTRMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaInputClusterInputTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRMediaInputClusterInputTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRMediaInputClusterInputTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26564,20 +18481,12 @@ class MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackBridge { public: MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -26589,16 +18498,9 @@ class MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBrid { public: MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26613,18 +18515,12 @@ class MTRKeypadInputClusterCecKeyCodeAttributeCallbackBridge { public: MTRKeypadInputClusterCecKeyCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRKeypadInputClusterCecKeyCodeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; - - MTRKeypadInputClusterCecKeyCodeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRKeypadInputClusterCecKeyCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::KeypadInput::CecKeyCode value); }; @@ -26633,18 +18529,10 @@ class MTRKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge : public MTRKeypadInputClusterCecKeyCodeAttributeCallbackBridge { public: - MTRKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRKeypadInputClusterCecKeyCodeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRKeypadInputClusterCecKeyCodeAttributeCallbackBridge(queue, device, handler, action, true), + MTRKeypadInputClusterCecKeyCodeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26659,20 +18547,12 @@ class MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackBridge { public: MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -26683,16 +18563,9 @@ class MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge { public: MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26707,20 +18580,12 @@ class MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge { public: MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::KeypadInput::KeypadInputStatusEnum value); @@ -26731,16 +18596,9 @@ class MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscriptionBri { public: MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26755,22 +18613,14 @@ class MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge { public: MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -26781,16 +18631,9 @@ class MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscri { public: MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26805,22 +18648,13 @@ class MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge { public: MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ContentLauncher::ContentLaunchStatusEnum value); }; @@ -26830,16 +18664,9 @@ class MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackSubscript { public: MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26854,22 +18681,13 @@ class MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackB { public: MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void @@ -26882,17 +18700,9 @@ class MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackS { public: MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26907,20 +18717,12 @@ class MTRContentLauncherClusterMetricTypeEnumAttributeCallbackBridge { public: MTRContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ContentLauncher::MetricTypeEnum value); }; @@ -26930,16 +18732,9 @@ class MTRContentLauncherClusterMetricTypeEnumAttributeCallbackSubscriptionBridge { public: MTRContentLauncherClusterMetricTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRContentLauncherClusterMetricTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -26954,22 +18749,13 @@ class MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackBridge { public: MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -26980,16 +18766,9 @@ class MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackSubscripti { public: MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27004,20 +18783,12 @@ class MTRContentLauncherClusterParameterEnumAttributeCallbackBridge { public: MTRContentLauncherClusterParameterEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRContentLauncherClusterParameterEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRContentLauncherClusterParameterEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRContentLauncherClusterParameterEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ContentLauncher::ParameterEnum value); }; @@ -27027,16 +18798,9 @@ class MTRContentLauncherClusterParameterEnumAttributeCallbackSubscriptionBridge { public: MTRContentLauncherClusterParameterEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherClusterParameterEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRContentLauncherClusterParameterEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRContentLauncherClusterParameterEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRContentLauncherClusterParameterEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27051,20 +18815,12 @@ class MTRNullableContentLauncherClusterParameterEnumAttributeCallbackBridge { public: MTRNullableContentLauncherClusterParameterEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableContentLauncherClusterParameterEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableContentLauncherClusterParameterEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableContentLauncherClusterParameterEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -27076,16 +18832,9 @@ class MTRNullableContentLauncherClusterParameterEnumAttributeCallbackSubscriptio { public: MTRNullableContentLauncherClusterParameterEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableContentLauncherClusterParameterEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableContentLauncherClusterParameterEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableContentLauncherClusterParameterEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableContentLauncherClusterParameterEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27100,20 +18849,12 @@ class MTRAudioOutputClusterOutputTypeEnumAttributeCallbackBridge { public: MTRAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::AudioOutput::OutputTypeEnum value); }; @@ -27122,18 +18863,10 @@ class MTRAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBridge : public MTRAudioOutputClusterOutputTypeEnumAttributeCallbackBridge { public: - MTRAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27148,20 +18881,12 @@ class MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackBridge { public: MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -27173,16 +18898,9 @@ class MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBr { public: MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27198,22 +18916,15 @@ class MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbac public: MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, + MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; - - MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ApplicationLauncher::ApplicationLauncherStatusEnum value); @@ -27224,17 +18935,9 @@ class MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbac { public: MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, - action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27250,21 +18953,16 @@ class MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttribut public: MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : MTRCallbackBridge( - queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge( - queue, nodeID, controller, handler, action, OnSuccessFn, keepAlive){}; + queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : + MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action, + bool keepAlive = false) : MTRCallbackBridge( - queue, device, handler, action, OnSuccessFn, keepAlive){}; + queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn( void * context, @@ -27276,18 +18974,9 @@ class MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttribut { public: MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge(queue, nodeID, controller, - handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge(queue, device, handler, action, - true), + MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27302,22 +18991,13 @@ class MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge { public: MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; - - MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, - OnSuccessFn, keepAlive){}; + MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, + keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum value); }; @@ -27327,16 +19007,9 @@ class MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscripti { public: MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27351,22 +19024,13 @@ class MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackBr { public: MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, - ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, - action, OnSuccessFn, keepAlive){}; + MTRCallbackBridge(queue, handler, OnSuccessFn, + keepAlive){}; - MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, + MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action, bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void @@ -27379,17 +19043,9 @@ class MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackSu { public: MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, - true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27404,18 +19060,12 @@ class MTRTestClusterClusterSimpleEnumAttributeCallbackBridge { public: MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, keepAlive){}; + MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::TestCluster::SimpleEnum value); }; @@ -27424,18 +19074,10 @@ class MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge : public MTRTestClusterClusterSimpleEnumAttributeCallbackBridge { public: - MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27450,20 +19092,12 @@ class MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge { public: MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, const chip::app::DataModel::Nullable & value); @@ -27474,16 +19108,9 @@ class MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge { public: MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27498,20 +19125,12 @@ class MTRFaultInjectionClusterFaultTypeAttributeCallbackBridge { public: MTRFaultInjectionClusterFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; - - MTRFaultInjectionClusterFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRFaultInjectionClusterFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, + MTRFaultInjectionClusterFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, - keepAlive){}; + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, chip::app::Clusters::FaultInjection::FaultType value); }; @@ -27520,18 +19139,10 @@ class MTRFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBridge : public MTRFaultInjectionClusterFaultTypeAttributeCallbackBridge { public: - MTRFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFaultInjectionClusterFaultTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRFaultInjectionClusterFaultTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRFaultInjectionClusterFaultTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} @@ -27546,20 +19157,12 @@ class MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackBridge { public: MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRLocalActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn, - keepAlive){}; + bool keepAlive = false) : + MTRCallbackBridge(queue, handler, OnSuccessFn, keepAlive){}; - MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, chip::NodeId nodeID, - MTRDeviceController * controller, ResponseHandler handler, + MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, bool keepAlive = false) : - MTRCallbackBridge(queue, nodeID, controller, handler, action, - OnSuccessFn, keepAlive){}; - - MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackBridge(dispatch_queue_t queue, MTRBaseDevice * device, - ResponseHandler handler, MTRActionBlock action, - bool keepAlive = false) : - MTRCallbackBridge(queue, device, handler, action, OnSuccessFn, + MTRCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; static void OnSuccessFn(void * context, @@ -27571,16 +19174,9 @@ class MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBrid { public: MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, chip::NodeId nodeID, MTRDeviceController * controller, ResponseHandler handler, - MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackBridge(queue, nodeID, controller, handler, action, true), - mEstablishedHandler(establishedHandler) - {} - - MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, MTRBaseDevice * device, ResponseHandler handler, MTRActionBlock action, + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackBridge(queue, device, handler, action, true), + MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm index e743f51416f9fe..5055f414bc45a7 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm @@ -70,13 +70,14 @@ - (void)identifyWithParams:(MTRIdentifyClusterIdentifyParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Identify::Commands::Identify::Type request; @@ -85,12 +86,10 @@ new MTRCommandSuccessCallbackBridge( } request.identifyTime = params.identifyTime.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -120,13 +119,14 @@ - (void)triggerEffectWithParams:(MTRIdentifyClusterTriggerEffectParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Identify::Commands::TriggerEffect::Type request; @@ -138,12 +138,10 @@ new MTRCommandSuccessCallbackBridge( request.effectVariant = static_cast>(params.effectVariant.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -294,8 +292,9 @@ - (void)addGroupWithParams:(MTRGroupsClusterAddGroupParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRGroupsClusterAddGroupResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsClusterAddGroupResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsClusterAddGroupResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::AddGroup::Type request; @@ -305,12 +304,10 @@ new MTRGroupsClusterAddGroupResponseCallbackBridge(self.callbackQueue, baseDevic request.groupId = params.groupId.unsignedShortValue; request.groupName = [self asCharSpan:params.groupName]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -341,8 +338,9 @@ - (void)viewGroupWithParams:(MTRGroupsClusterViewGroupParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRGroupsClusterViewGroupResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsClusterViewGroupResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupsClusterViewGroupResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::ViewGroup::Type request; @@ -351,12 +349,10 @@ new MTRGroupsClusterViewGroupResponseCallbackBridge(self.callbackQueue, baseDevi } request.groupId = params.groupId.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -387,8 +383,10 @@ - (void)getGroupMembershipWithParams:(MTRGroupsClusterGetGroupMembershipParams * MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupsClusterGetGroupMembershipResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::GetGroupMembership::Type request; @@ -418,12 +416,10 @@ new MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(self.callbackQueue, } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -454,8 +450,10 @@ - (void)removeGroupWithParams:(MTRGroupsClusterRemoveGroupParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRGroupsClusterRemoveGroupResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupsClusterRemoveGroupResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupsClusterRemoveGroupResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::RemoveGroup::Type request; @@ -464,12 +462,10 @@ new MTRGroupsClusterRemoveGroupResponseCallbackBridge(self.callbackQueue, baseDe } request.groupId = params.groupId.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -508,13 +504,14 @@ - (void)removeAllGroupsWithParams:(MTRGroupsClusterRemoveAllGroupsParams * _Null MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::RemoveAllGroups::Type request; @@ -522,12 +519,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -557,13 +552,14 @@ - (void)addGroupIfIdentifyingWithParams:(MTRGroupsClusterAddGroupIfIdentifyingPa MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Groups::Commands::AddGroupIfIdentifying::Type request; @@ -573,12 +569,10 @@ new MTRCommandSuccessCallbackBridge( request.groupId = params.groupId.unsignedShortValue; request.groupName = [self asCharSpan:params.groupName]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -754,8 +748,9 @@ - (void)addSceneWithParams:(MTRScenesClusterAddSceneParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRScenesClusterAddSceneResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterAddSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterAddSceneResponseCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::AddScene::Type request; @@ -841,12 +836,10 @@ new MTRScenesClusterAddSceneResponseCallbackBridge(self.callbackQueue, baseDevic } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -877,8 +870,9 @@ - (void)viewSceneWithParams:(MTRScenesClusterViewSceneParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRScenesClusterViewSceneResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterViewSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterViewSceneResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::ViewScene::Type request; @@ -888,12 +882,10 @@ new MTRScenesClusterViewSceneResponseCallbackBridge(self.callbackQueue, baseDevi request.groupId = params.groupId.unsignedShortValue; request.sceneId = params.sceneId.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -924,8 +916,10 @@ - (void)removeSceneWithParams:(MTRScenesClusterRemoveSceneParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRScenesClusterRemoveSceneResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterRemoveSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterRemoveSceneResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::RemoveScene::Type request; @@ -935,12 +929,10 @@ new MTRScenesClusterRemoveSceneResponseCallbackBridge(self.callbackQueue, baseDe request.groupId = params.groupId.unsignedShortValue; request.sceneId = params.sceneId.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -971,8 +963,10 @@ - (void)removeAllScenesWithParams:(MTRScenesClusterRemoveAllScenesParams *)param MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRScenesClusterRemoveAllScenesResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterRemoveAllScenesResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterRemoveAllScenesResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::RemoveAllScenes::Type request; @@ -981,12 +975,10 @@ new MTRScenesClusterRemoveAllScenesResponseCallbackBridge(self.callbackQueue, ba } request.groupId = params.groupId.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1017,8 +1009,9 @@ - (void)storeSceneWithParams:(MTRScenesClusterStoreSceneParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRScenesClusterStoreSceneResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterStoreSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterStoreSceneResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::StoreScene::Type request; @@ -1028,12 +1021,10 @@ new MTRScenesClusterStoreSceneResponseCallbackBridge(self.callbackQueue, baseDev request.groupId = params.groupId.unsignedShortValue; request.sceneId = params.sceneId.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1063,13 +1054,14 @@ - (void)recallSceneWithParams:(MTRScenesClusterRecallSceneParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::RecallScene::Type request; @@ -1088,12 +1080,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1124,8 +1114,10 @@ - (void)getSceneMembershipWithParams:(MTRScenesClusterGetSceneMembershipParams * MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRScenesClusterGetSceneMembershipResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterGetSceneMembershipResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterGetSceneMembershipResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::GetSceneMembership::Type request; @@ -1134,12 +1126,10 @@ new MTRScenesClusterGetSceneMembershipResponseCallbackBridge(self.callbackQueue, } request.groupId = params.groupId.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1170,8 +1160,10 @@ - (void)enhancedAddSceneWithParams:(MTRScenesClusterEnhancedAddSceneParams *)par MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterEnhancedAddSceneResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::EnhancedAddScene::Type request; @@ -1257,12 +1249,10 @@ new MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(self.callbackQueue, b } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1293,8 +1283,10 @@ - (void)enhancedViewSceneWithParams:(MTRScenesClusterEnhancedViewSceneParams *)p MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterEnhancedViewSceneResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::EnhancedViewScene::Type request; @@ -1304,12 +1296,10 @@ new MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(self.callbackQueue, request.groupId = params.groupId.unsignedShortValue; request.sceneId = params.sceneId.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1340,8 +1330,9 @@ - (void)copySceneWithParams:(MTRScenesClusterCopySceneParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRScenesClusterCopySceneResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRScenesClusterCopySceneResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ScenesClusterCopySceneResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Scenes::Commands::CopyScene::Type request; @@ -1354,12 +1345,10 @@ new MTRScenesClusterCopySceneResponseCallbackBridge(self.callbackQueue, baseDevi request.groupIdTo = params.groupIdTo.unsignedShortValue; request.sceneIdTo = params.sceneIdTo.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1618,13 +1607,14 @@ - (void)offWithParams:(MTROnOffClusterOffParams * _Nullable)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::Off::Type request; @@ -1632,12 +1622,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1673,13 +1661,14 @@ - (void)onWithParams:(MTROnOffClusterOnParams * _Nullable)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::On::Type request; @@ -1687,12 +1676,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1728,13 +1715,14 @@ - (void)toggleWithParams:(MTROnOffClusterToggleParams * _Nullable)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::Toggle::Type request; @@ -1742,12 +1730,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1777,13 +1763,14 @@ - (void)offWithEffectWithParams:(MTROnOffClusterOffWithEffectParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::OffWithEffect::Type request; @@ -1795,12 +1782,10 @@ new MTRCommandSuccessCallbackBridge( request.effectVariant = static_cast>(params.effectVariant.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1839,13 +1824,14 @@ - (void)onWithRecallGlobalSceneWithParams:(MTROnOffClusterOnWithRecallGlobalScen MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::OnWithRecallGlobalScene::Type request; @@ -1853,12 +1839,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -1888,13 +1872,14 @@ - (void)onWithTimedOffWithParams:(MTROnOffClusterOnWithTimedOffParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OnOff::Commands::OnWithTimedOff::Type request; @@ -1906,12 +1891,10 @@ new MTRCommandSuccessCallbackBridge( request.onTime = params.onTime.unsignedShortValue; request.offWaitTime = params.offWaitTime.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -2291,13 +2274,14 @@ - (void)moveToLevelWithParams:(MTRLevelControlClusterMoveToLevelParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::MoveToLevel::Type request; @@ -2314,12 +2298,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -2349,13 +2331,14 @@ - (void)moveWithParams:(MTRLevelControlClusterMoveParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::Move::Type request; @@ -2373,12 +2356,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -2408,13 +2389,14 @@ - (void)stepWithParams:(MTRLevelControlClusterStepParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::Step::Type request; @@ -2433,12 +2415,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -2468,13 +2448,14 @@ - (void)stopWithParams:(MTRLevelControlClusterStopParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::Stop::Type request; @@ -2484,12 +2465,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -2519,13 +2498,14 @@ - (void)moveToLevelWithOnOffWithParams:(MTRLevelControlClusterMoveToLevelWithOnO MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::MoveToLevelWithOnOff::Type request; @@ -2542,12 +2522,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -2577,13 +2555,14 @@ - (void)moveWithOnOffWithParams:(MTRLevelControlClusterMoveWithOnOffParams *)par MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::MoveWithOnOff::Type request; @@ -2601,12 +2580,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -2636,13 +2613,14 @@ - (void)stepWithOnOffWithParams:(MTRLevelControlClusterStepWithOnOffParams *)par MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::StepWithOnOff::Type request; @@ -2661,12 +2639,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -2696,13 +2672,14 @@ - (void)stopWithOnOffWithParams:(MTRLevelControlClusterStopWithOnOffParams *)par MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::StopWithOnOff::Type request; @@ -2712,12 +2689,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -2747,13 +2722,14 @@ - (void)moveToClosestFrequencyWithParams:(MTRLevelControlClusterMoveToClosestFre MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LevelControl::Commands::MoveToClosestFrequency::Type request; @@ -2762,12 +2738,10 @@ new MTRCommandSuccessCallbackBridge( } request.frequency = params.frequency.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -3785,13 +3759,14 @@ - (void)instantActionWithParams:(MTRActionsClusterInstantActionParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::InstantAction::Type request; @@ -3804,12 +3779,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -3839,13 +3812,14 @@ - (void)instantActionWithTransitionWithParams:(MTRActionsClusterInstantActionWit MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::InstantActionWithTransition::Type request; @@ -3859,12 +3833,10 @@ new MTRCommandSuccessCallbackBridge( } request.transitionTime = params.transitionTime.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -3894,13 +3866,14 @@ - (void)startActionWithParams:(MTRActionsClusterStartActionParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::StartAction::Type request; @@ -3913,12 +3886,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -3948,13 +3919,14 @@ - (void)startActionWithDurationWithParams:(MTRActionsClusterStartActionWithDurat MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::StartActionWithDuration::Type request; @@ -3968,12 +3940,10 @@ new MTRCommandSuccessCallbackBridge( } request.duration = params.duration.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -4003,13 +3973,14 @@ - (void)stopActionWithParams:(MTRActionsClusterStopActionParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::StopAction::Type request; @@ -4022,12 +3993,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -4057,13 +4026,14 @@ - (void)pauseActionWithParams:(MTRActionsClusterPauseActionParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::PauseAction::Type request; @@ -4076,12 +4046,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -4111,13 +4079,14 @@ - (void)pauseActionWithDurationWithParams:(MTRActionsClusterPauseActionWithDurat MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::PauseActionWithDuration::Type request; @@ -4131,12 +4100,10 @@ new MTRCommandSuccessCallbackBridge( } request.duration = params.duration.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -4166,13 +4133,14 @@ - (void)resumeActionWithParams:(MTRActionsClusterResumeActionParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::ResumeAction::Type request; @@ -4185,12 +4153,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -4220,13 +4186,14 @@ - (void)enableActionWithParams:(MTRActionsClusterEnableActionParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::EnableAction::Type request; @@ -4239,12 +4206,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -4274,13 +4239,14 @@ - (void)enableActionWithDurationWithParams:(MTRActionsClusterEnableActionWithDur MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::EnableActionWithDuration::Type request; @@ -4294,12 +4260,10 @@ new MTRCommandSuccessCallbackBridge( } request.duration = params.duration.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -4329,13 +4293,14 @@ - (void)disableActionWithParams:(MTRActionsClusterDisableActionParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::DisableAction::Type request; @@ -4348,12 +4313,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = params.invokeID.unsignedIntValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -4383,13 +4346,14 @@ - (void)disableActionWithDurationWithParams:(MTRActionsClusterDisableActionWithD MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Actions::Commands::DisableActionWithDuration::Type request; @@ -4403,12 +4367,10 @@ new MTRCommandSuccessCallbackBridge( } request.duration = params.duration.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -4657,13 +4619,14 @@ - (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nulla MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Basic::Commands::MfgSpecificPing::Type request; @@ -4671,12 +4634,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -5008,8 +4969,10 @@ - (void)queryImageWithParams:(MTROtaSoftwareUpdateProviderClusterQueryImageParam MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateProviderClusterQueryImageResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OtaSoftwareUpdateProvider::Commands::QueryImage::Type request; @@ -5060,12 +5023,10 @@ new MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(self.cal definedValue_0 = [self asByteSpan:params.metadataForProvider]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -5096,8 +5057,10 @@ - (void)applyUpdateRequestWithParams:(MTROtaSoftwareUpdateProviderClusterApplyUp MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OtaSoftwareUpdateProvider::Commands::ApplyUpdateRequest::Type request; @@ -5107,12 +5070,10 @@ new MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(self.ca request.updateToken = [self asByteSpan:params.updateToken]; request.newVersion = params.newVersion.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -5142,13 +5103,14 @@ - (void)notifyUpdateAppliedWithParams:(MTROtaSoftwareUpdateProviderClusterNotify MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OtaSoftwareUpdateProvider::Commands::NotifyUpdateApplied::Type request; @@ -5158,12 +5120,10 @@ new MTRCommandSuccessCallbackBridge( request.updateToken = [self asByteSpan:params.updateToken]; request.softwareVersion = params.softwareVersion.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -5291,13 +5251,14 @@ - (void)announceOtaProviderWithParams:(MTROtaSoftwareUpdateRequestorClusterAnnou MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OtaSoftwareUpdateRequestor::Commands::AnnounceOtaProvider::Type request; @@ -5315,12 +5276,10 @@ new MTRCommandSuccessCallbackBridge( } request.endpoint = params.endpoint.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -6188,8 +6147,10 @@ - (void)armFailSafeWithParams:(MTRGeneralCommissioningClusterArmFailSafeParams * MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningClusterArmFailSafeResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GeneralCommissioning::Commands::ArmFailSafe::Type request; @@ -6199,12 +6160,10 @@ new MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(self.callbac request.expiryLengthSeconds = params.expiryLengthSeconds.unsignedShortValue; request.breadcrumb = params.breadcrumb.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -6235,8 +6194,10 @@ - (void)setRegulatoryConfigWithParams:(MTRGeneralCommissioningClusterSetRegulato MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningClusterSetRegulatoryConfigResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GeneralCommissioning::Commands::SetRegulatoryConfig::Type request; @@ -6248,13 +6209,10 @@ new MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(self request.countryCode = [self asCharSpan:params.countryCode]; request.breadcrumb = params.breadcrumb.unsignedLongLongValue; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -6298,22 +6256,22 @@ - (void)commissioningCompleteWithParams:(MTRGeneralCommissioningClusterCommissio MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { - chip::Optional timedInvokeTimeoutMs; - ListFreer listFreer; - GeneralCommissioning::Commands::CommissioningComplete::Type request; - if (timedInvokeTimeoutMsParam != nil) { - timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); - } + auto * bridge + = new MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GeneralCommissioningClusterCommissioningCompleteResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { + chip::Optional timedInvokeTimeoutMs; + ListFreer listFreer; + GeneralCommissioning::Commands::CommissioningComplete::Type request; + if (timedInvokeTimeoutMsParam != nil) { + timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); + } - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); - chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); - }); + chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); + }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -6513,8 +6471,10 @@ - (void)scanNetworksWithParams:(MTRNetworkCommissioningClusterScanNetworksParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterScanNetworksResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::ScanNetworks::Type request; @@ -6537,12 +6497,10 @@ new MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(self.callba } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -6573,8 +6531,10 @@ - (void)addOrUpdateWiFiNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpd MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::AddOrUpdateWiFiNetwork::Type request; @@ -6588,12 +6548,10 @@ new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callb definedValue_0 = params.breadcrumb.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -6624,8 +6582,10 @@ - (void)addOrUpdateThreadNetworkWithParams:(MTRNetworkCommissioningClusterAddOrU MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::AddOrUpdateThreadNetwork::Type request; @@ -6638,12 +6598,10 @@ new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callb definedValue_0 = params.breadcrumb.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -6674,8 +6632,10 @@ - (void)removeNetworkWithParams:(MTRNetworkCommissioningClusterRemoveNetworkPara MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::RemoveNetwork::Type request; @@ -6688,12 +6648,10 @@ new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callb definedValue_0 = params.breadcrumb.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -6724,8 +6682,10 @@ - (void)connectNetworkWithParams:(MTRNetworkCommissioningClusterConnectNetworkPa MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterConnectNetworkResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::ConnectNetwork::Type request; @@ -6738,12 +6698,10 @@ new MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(self.call definedValue_0 = params.breadcrumb.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -6774,8 +6732,10 @@ - (void)reorderNetworkWithParams:(MTRNetworkCommissioningClusterReorderNetworkPa MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; NetworkCommissioning::Commands::ReorderNetwork::Type request; @@ -6789,12 +6749,10 @@ new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callb definedValue_0 = params.breadcrumb.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -7040,8 +6998,10 @@ - (void)retrieveLogsRequestWithParams:(MTRDiagnosticLogsClusterRetrieveLogsReque MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DiagnosticLogsClusterRetrieveLogsResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DiagnosticLogs::Commands::RetrieveLogsRequest::Type request; @@ -7053,12 +7013,10 @@ new MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(self.callbackQueu params.requestedProtocol.unsignedCharValue); request.transferFileDesignator = [self asByteSpan:params.transferFileDesignator]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -7165,13 +7123,14 @@ - (void)testEventTriggerWithParams:(MTRGeneralDiagnosticsClusterTestEventTrigger MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GeneralDiagnostics::Commands::TestEventTrigger::Type request; @@ -7181,12 +7140,10 @@ new MTRCommandSuccessCallbackBridge( request.enableKey = [self asByteSpan:params.enableKey]; request.eventTrigger = params.eventTrigger.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -7373,13 +7330,14 @@ - (void)resetWatermarksWithParams:(MTRSoftwareDiagnosticsClusterResetWatermarksP MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; SoftwareDiagnostics::Commands::ResetWatermarks::Type request; @@ -7387,12 +7345,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -7547,13 +7503,14 @@ - (void)resetCountsWithParams:(MTRThreadNetworkDiagnosticsClusterResetCountsPara MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ThreadNetworkDiagnostics::Commands::ResetCounts::Type request; @@ -7561,12 +7518,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -8192,13 +8147,14 @@ - (void)resetCountsWithParams:(MTRWiFiNetworkDiagnosticsClusterResetCountsParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WiFiNetworkDiagnostics::Commands::ResetCounts::Type request; @@ -8206,12 +8162,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -8436,13 +8390,14 @@ - (void)resetCountsWithParams:(MTREthernetNetworkDiagnosticsClusterResetCountsPa MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; EthernetNetworkDiagnostics::Commands::ResetCounts::Type request; @@ -8450,12 +8405,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -8934,13 +8887,14 @@ - (void)openCommissioningWindowWithParams:(MTRAdministratorCommissioningClusterO MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AdministratorCommissioning::Commands::OpenCommissioningWindow::Type request; @@ -8956,12 +8910,10 @@ new MTRCommandSuccessCallbackBridge( request.iterations = params.iterations.unsignedIntValue; request.salt = [self asByteSpan:params.salt]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -8991,13 +8943,14 @@ - (void)openBasicCommissioningWindowWithParams:(MTRAdministratorCommissioningClu MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type request; @@ -9009,12 +8962,10 @@ new MTRCommandSuccessCallbackBridge( } request.commissioningTimeout = params.commissioningTimeout.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9053,13 +9004,14 @@ - (void)revokeCommissioningWithParams:(MTRAdministratorCommissioningClusterRevok MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AdministratorCommissioning::Commands::RevokeCommissioning::Type request; @@ -9070,12 +9022,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(10000); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9234,8 +9184,10 @@ - (void)attestationRequestWithParams:(MTROperationalCredentialsClusterAttestatio MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTROperationalCredentialsClusterAttestationResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterAttestationResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterAttestationResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::AttestationRequest::Type request; @@ -9244,12 +9196,10 @@ new MTROperationalCredentialsClusterAttestationResponseCallbackBridge(self.callb } request.attestationNonce = [self asByteSpan:params.attestationNonce]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9280,8 +9230,10 @@ - (void)certificateChainRequestWithParams:(MTROperationalCredentialsClusterCerti MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterCertificateChainResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::CertificateChainRequest::Type request; @@ -9290,13 +9242,10 @@ new MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(self. } request.certificateType = params.certificateType.unsignedCharValue; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9327,8 +9276,10 @@ - (void)CSRRequestWithParams:(MTROperationalCredentialsClusterCSRRequestParams * MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTROperationalCredentialsClusterCSRResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterCSRResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterCSRResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::CSRRequest::Type request; @@ -9341,12 +9292,10 @@ new MTROperationalCredentialsClusterCSRResponseCallbackBridge(self.callbackQueue definedValue_0 = params.isForUpdateNOC.boolValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9377,8 +9326,10 @@ - (void)addNOCWithParams:(MTROperationalCredentialsClusterAddNOCParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::AddNOC::Type request; @@ -9395,12 +9346,10 @@ new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue request.adminVendorId = static_cast>( params.adminVendorId.unsignedShortValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9431,8 +9380,10 @@ - (void)updateNOCWithParams:(MTROperationalCredentialsClusterUpdateNOCParams *)p MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::UpdateNOC::Type request; @@ -9445,12 +9396,10 @@ new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue definedValue_0 = [self asByteSpan:params.icacValue]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9481,8 +9430,10 @@ - (void)updateFabricLabelWithParams:(MTROperationalCredentialsClusterUpdateFabri MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::UpdateFabricLabel::Type request; @@ -9491,12 +9442,10 @@ new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue } request.label = [self asCharSpan:params.label]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9527,8 +9476,10 @@ - (void)removeFabricWithParams:(MTROperationalCredentialsClusterRemoveFabricPara MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::RemoveFabric::Type request; @@ -9537,12 +9488,10 @@ new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue } request.fabricIndex = params.fabricIndex.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9572,13 +9521,14 @@ - (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAdd MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; OperationalCredentials::Commands::AddTrustedRootCertificate::Type request; @@ -9587,12 +9537,10 @@ new MTRCommandSuccessCallbackBridge( } request.rootCertificate = [self asByteSpan:params.rootCertificate]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9823,13 +9771,14 @@ - (void)keySetWriteWithParams:(MTRGroupKeyManagementClusterKeySetWriteParams *)p MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GroupKeyManagement::Commands::KeySetWrite::Type request; @@ -9877,12 +9826,10 @@ new MTRCommandSuccessCallbackBridge( nonNullValue_1 = params.groupKeySet.epochStartTime2.unsignedLongLongValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9913,8 +9860,10 @@ - (void)keySetReadWithParams:(MTRGroupKeyManagementClusterKeySetReadParams *)par MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementClusterKeySetReadResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GroupKeyManagement::Commands::KeySetRead::Type request; @@ -9923,12 +9872,10 @@ new MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(self.callbackQu } request.groupKeySetID = params.groupKeySetID.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -9958,13 +9905,14 @@ - (void)keySetRemoveWithParams:(MTRGroupKeyManagementClusterKeySetRemoveParams * MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GroupKeyManagement::Commands::KeySetRemove::Type request; @@ -9973,12 +9921,10 @@ new MTRCommandSuccessCallbackBridge( } request.groupKeySetID = params.groupKeySetID.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -10009,8 +9955,10 @@ - (void)keySetReadAllIndicesWithParams:(MTRGroupKeyManagementClusterKeySetReadAl MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + GroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; GroupKeyManagement::Commands::KeySetReadAllIndices::Type request; @@ -10040,13 +9988,10 @@ new MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(self. } } - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -10476,13 +10421,14 @@ - (void)changeToModeWithParams:(MTRModeSelectClusterChangeToModeParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ModeSelect::Commands::ChangeToMode::Type request; @@ -10491,12 +10437,10 @@ new MTRCommandSuccessCallbackBridge( } request.newMode = params.newMode.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -10688,13 +10632,14 @@ - (void)lockDoorWithParams:(MTRDoorLockClusterLockDoorParams * _Nullable)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::LockDoor::Type request; @@ -10711,12 +10656,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -10746,13 +10689,14 @@ - (void)unlockDoorWithParams:(MTRDoorLockClusterUnlockDoorParams * _Nullable)par MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::UnlockDoor::Type request; @@ -10769,12 +10713,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -10804,13 +10746,14 @@ - (void)unlockWithTimeoutWithParams:(MTRDoorLockClusterUnlockWithTimeoutParams * MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::UnlockWithTimeout::Type request; @@ -10826,12 +10769,10 @@ new MTRCommandSuccessCallbackBridge( definedValue_0 = [self asByteSpan:params.pinCode]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -10861,13 +10802,14 @@ - (void)setWeekDayScheduleWithParams:(MTRDoorLockClusterSetWeekDayScheduleParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::SetWeekDaySchedule::Type request; @@ -10883,12 +10825,10 @@ new MTRCommandSuccessCallbackBridge( request.endHour = params.endHour.unsignedCharValue; request.endMinute = params.endMinute.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -10919,8 +10859,10 @@ - (void)getWeekDayScheduleWithParams:(MTRDoorLockClusterGetWeekDayScheduleParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterGetWeekDayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::GetWeekDaySchedule::Type request; @@ -10930,12 +10872,10 @@ new MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(self.callbackQueu request.weekDayIndex = params.weekDayIndex.unsignedCharValue; request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -10965,13 +10905,14 @@ - (void)clearWeekDayScheduleWithParams:(MTRDoorLockClusterClearWeekDaySchedulePa MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::ClearWeekDaySchedule::Type request; @@ -10981,12 +10922,10 @@ new MTRCommandSuccessCallbackBridge( request.weekDayIndex = params.weekDayIndex.unsignedCharValue; request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11016,13 +10955,14 @@ - (void)setYearDayScheduleWithParams:(MTRDoorLockClusterSetYearDayScheduleParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::SetYearDaySchedule::Type request; @@ -11034,12 +10974,10 @@ new MTRCommandSuccessCallbackBridge( request.localStartTime = params.localStartTime.unsignedIntValue; request.localEndTime = params.localEndTime.unsignedIntValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11070,8 +11008,10 @@ - (void)getYearDayScheduleWithParams:(MTRDoorLockClusterGetYearDayScheduleParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterGetYearDayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::GetYearDaySchedule::Type request; @@ -11081,12 +11021,10 @@ new MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(self.callbackQueu request.yearDayIndex = params.yearDayIndex.unsignedCharValue; request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11116,13 +11054,14 @@ - (void)clearYearDayScheduleWithParams:(MTRDoorLockClusterClearYearDaySchedulePa MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::ClearYearDaySchedule::Type request; @@ -11132,12 +11071,10 @@ new MTRCommandSuccessCallbackBridge( request.yearDayIndex = params.yearDayIndex.unsignedCharValue; request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11167,13 +11104,14 @@ - (void)setHolidayScheduleWithParams:(MTRDoorLockClusterSetHolidayScheduleParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::SetHolidaySchedule::Type request; @@ -11186,12 +11124,10 @@ new MTRCommandSuccessCallbackBridge( request.operatingMode = static_cast>(params.operatingMode.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11222,8 +11158,10 @@ - (void)getHolidayScheduleWithParams:(MTRDoorLockClusterGetHolidayScheduleParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterGetHolidayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::GetHolidaySchedule::Type request; @@ -11232,12 +11170,10 @@ new MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(self.callbackQueu } request.holidayIndex = params.holidayIndex.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11267,13 +11203,14 @@ - (void)clearHolidayScheduleWithParams:(MTRDoorLockClusterClearHolidaySchedulePa MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::ClearHolidaySchedule::Type request; @@ -11282,12 +11219,10 @@ new MTRCommandSuccessCallbackBridge( } request.holidayIndex = params.holidayIndex.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11317,13 +11252,14 @@ - (void)setUserWithParams:(MTRDoorLockClusterSetUserParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::SetUser::Type request; @@ -11370,12 +11306,10 @@ new MTRCommandSuccessCallbackBridge( = static_cast>(params.credentialRule.unsignedCharValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11405,8 +11339,9 @@ - (void)getUserWithParams:(MTRDoorLockClusterGetUserParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRDoorLockClusterGetUserResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterGetUserResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterGetUserResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::GetUser::Type request; @@ -11415,12 +11350,10 @@ new MTRDoorLockClusterGetUserResponseCallbackBridge(self.callbackQueue, baseDevi } request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11450,13 +11383,14 @@ - (void)clearUserWithParams:(MTRDoorLockClusterClearUserParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::ClearUser::Type request; @@ -11468,12 +11402,10 @@ new MTRCommandSuccessCallbackBridge( } request.userIndex = params.userIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11504,8 +11436,10 @@ - (void)setCredentialWithParams:(MTRDoorLockClusterSetCredentialParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRDoorLockClusterSetCredentialResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterSetCredentialResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterSetCredentialResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::SetCredential::Type request; @@ -11543,12 +11477,10 @@ new MTRDoorLockClusterSetCredentialResponseCallbackBridge(self.callbackQueue, ba = static_cast>(params.userType.unsignedCharValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11579,8 +11511,10 @@ - (void)getCredentialStatusWithParams:(MTRDoorLockClusterGetCredentialStatusPara MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + DoorLockClusterGetCredentialStatusResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::GetCredentialStatus::Type request; @@ -11592,12 +11526,10 @@ new MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(self.callbackQue params.credential.credentialType.unsignedCharValue); request.credential.credentialIndex = params.credential.credentialIndex.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -11627,13 +11559,14 @@ - (void)clearCredentialWithParams:(MTRDoorLockClusterClearCredentialParams *)par MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; DoorLock::Commands::ClearCredential::Type request; @@ -11652,12 +11585,10 @@ new MTRCommandSuccessCallbackBridge( nonNullValue_0.credentialIndex = params.credential.credentialIndex.unsignedShortValue; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -12589,13 +12520,14 @@ - (void)upOrOpenWithParams:(MTRWindowCoveringClusterUpOrOpenParams * _Nullable)p MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::UpOrOpen::Type request; @@ -12603,12 +12535,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -12647,13 +12577,14 @@ - (void)downOrCloseWithParams:(MTRWindowCoveringClusterDownOrCloseParams * _Null MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::DownOrClose::Type request; @@ -12661,12 +12592,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -12705,13 +12634,14 @@ - (void)stopMotionWithParams:(MTRWindowCoveringClusterStopMotionParams * _Nullab MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::StopMotion::Type request; @@ -12719,12 +12649,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -12754,13 +12682,14 @@ - (void)goToLiftValueWithParams:(MTRWindowCoveringClusterGoToLiftValueParams *)p MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::GoToLiftValue::Type request; @@ -12769,12 +12698,10 @@ new MTRCommandSuccessCallbackBridge( } request.liftValue = params.liftValue.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -12804,13 +12731,14 @@ - (void)goToLiftPercentageWithParams:(MTRWindowCoveringClusterGoToLiftPercentage MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::GoToLiftPercentage::Type request; @@ -12819,12 +12747,10 @@ new MTRCommandSuccessCallbackBridge( } request.liftPercent100thsValue = params.liftPercent100thsValue.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -12854,13 +12780,14 @@ - (void)goToTiltValueWithParams:(MTRWindowCoveringClusterGoToTiltValueParams *)p MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::GoToTiltValue::Type request; @@ -12869,12 +12796,10 @@ new MTRCommandSuccessCallbackBridge( } request.tiltValue = params.tiltValue.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -12904,13 +12829,14 @@ - (void)goToTiltPercentageWithParams:(MTRWindowCoveringClusterGoToTiltPercentage MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; WindowCovering::Commands::GoToTiltPercentage::Type request; @@ -12919,12 +12845,10 @@ new MTRCommandSuccessCallbackBridge( } request.tiltPercent100thsValue = params.tiltPercent100thsValue.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -13303,13 +13227,14 @@ - (void)barrierControlGoToPercentWithParams:(MTRBarrierControlClusterBarrierCont MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; BarrierControl::Commands::BarrierControlGoToPercent::Type request; @@ -13318,12 +13243,10 @@ new MTRCommandSuccessCallbackBridge( } request.percentOpen = params.percentOpen.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -13362,13 +13285,14 @@ - (void)barrierControlStopWithParams:(MTRBarrierControlClusterBarrierControlStop MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; BarrierControl::Commands::BarrierControlStop::Type request; @@ -13376,12 +13300,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -14031,13 +13953,14 @@ - (void)setpointRaiseLowerWithParams:(MTRThermostatClusterSetpointRaiseLowerPara MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Thermostat::Commands::SetpointRaiseLower::Type request; @@ -14047,12 +13970,10 @@ new MTRCommandSuccessCallbackBridge( request.mode = static_cast>(params.mode.unsignedCharValue); request.amount = params.amount.charValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -14082,13 +14003,14 @@ - (void)setWeeklyScheduleWithParams:(MTRThermostatClusterSetWeeklyScheduleParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Thermostat::Commands::SetWeeklySchedule::Type request; @@ -14135,12 +14057,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -14171,8 +14091,10 @@ - (void)getWeeklyScheduleWithParams:(MTRThermostatClusterGetWeeklyScheduleParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ThermostatClusterGetWeeklyScheduleResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Thermostat::Commands::GetWeeklySchedule::Type request; @@ -14184,12 +14106,10 @@ new MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(self.callbackQue request.modeToReturn = static_cast>(params.modeToReturn.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -14228,13 +14148,14 @@ - (void)clearWeeklyScheduleWithParams:(MTRThermostatClusterClearWeeklySchedulePa MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Thermostat::Commands::ClearWeeklySchedule::Type request; @@ -14242,12 +14163,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -15739,13 +15658,14 @@ - (void)moveToHueWithParams:(MTRColorControlClusterMoveToHueParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveToHue::Type request; @@ -15759,12 +15679,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -15794,13 +15712,14 @@ - (void)moveHueWithParams:(MTRColorControlClusterMoveHueParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveHue::Type request; @@ -15813,12 +15732,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -15848,13 +15765,14 @@ - (void)stepHueWithParams:(MTRColorControlClusterStepHueParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::StepHue::Type request; @@ -15868,12 +15786,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -15903,13 +15819,14 @@ - (void)moveToSaturationWithParams:(MTRColorControlClusterMoveToSaturationParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveToSaturation::Type request; @@ -15921,12 +15838,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -15956,13 +15871,14 @@ - (void)moveSaturationWithParams:(MTRColorControlClusterMoveSaturationParams *)p MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveSaturation::Type request; @@ -15975,12 +15891,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16010,13 +15924,14 @@ - (void)stepSaturationWithParams:(MTRColorControlClusterStepSaturationParams *)p MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::StepSaturation::Type request; @@ -16030,12 +15945,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16065,13 +15978,14 @@ - (void)moveToHueAndSaturationWithParams:(MTRColorControlClusterMoveToHueAndSatu MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveToHueAndSaturation::Type request; @@ -16084,12 +15998,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16119,13 +16031,14 @@ - (void)moveToColorWithParams:(MTRColorControlClusterMoveToColorParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveToColor::Type request; @@ -16138,12 +16051,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16173,13 +16084,14 @@ - (void)moveColorWithParams:(MTRColorControlClusterMoveColorParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveColor::Type request; @@ -16191,12 +16103,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16226,13 +16136,14 @@ - (void)stepColorWithParams:(MTRColorControlClusterStepColorParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::StepColor::Type request; @@ -16245,12 +16156,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16280,13 +16189,14 @@ - (void)moveToColorTemperatureWithParams:(MTRColorControlClusterMoveToColorTempe MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveToColorTemperature::Type request; @@ -16298,12 +16208,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16333,13 +16241,14 @@ - (void)enhancedMoveToHueWithParams:(MTRColorControlClusterEnhancedMoveToHuePara MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::EnhancedMoveToHue::Type request; @@ -16353,12 +16262,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16388,13 +16295,14 @@ - (void)enhancedMoveHueWithParams:(MTRColorControlClusterEnhancedMoveHueParams * MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::EnhancedMoveHue::Type request; @@ -16407,12 +16315,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16442,13 +16348,14 @@ - (void)enhancedStepHueWithParams:(MTRColorControlClusterEnhancedStepHueParams * MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::EnhancedStepHue::Type request; @@ -16462,12 +16369,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16497,13 +16402,14 @@ - (void)enhancedMoveToHueAndSaturationWithParams:(MTRColorControlClusterEnhanced MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::EnhancedMoveToHueAndSaturation::Type request; @@ -16516,12 +16422,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16551,13 +16455,14 @@ - (void)colorLoopSetWithParams:(MTRColorControlClusterColorLoopSetParams *)param MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::ColorLoopSet::Type request; @@ -16574,12 +16479,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16609,13 +16512,14 @@ - (void)stopMoveStepWithParams:(MTRColorControlClusterStopMoveStepParams *)param MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::StopMoveStep::Type request; @@ -16625,12 +16529,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16660,13 +16562,14 @@ - (void)moveColorTemperatureWithParams:(MTRColorControlClusterMoveColorTemperatu MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::MoveColorTemperature::Type request; @@ -16681,12 +16584,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -16716,13 +16617,14 @@ - (void)stepColorTemperatureWithParams:(MTRColorControlClusterStepColorTemperatu MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ColorControl::Commands::StepColorTemperature::Type request; @@ -16738,12 +16640,10 @@ new MTRCommandSuccessCallbackBridge( request.optionsMask = params.optionsMask.unsignedCharValue; request.optionsOverride = params.optionsOverride.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19034,8 +18934,10 @@ - (void)changeChannelWithParams:(MTRChannelClusterChangeChannelParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRChannelClusterChangeChannelResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRChannelClusterChangeChannelResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ChannelClusterChangeChannelResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Channel::Commands::ChangeChannel::Type request; @@ -19044,12 +18946,10 @@ new MTRChannelClusterChangeChannelResponseCallbackBridge(self.callbackQueue, bas } request.match = [self asCharSpan:params.match]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19079,13 +18979,14 @@ - (void)changeChannelByNumberWithParams:(MTRChannelClusterChangeChannelByNumberP MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Channel::Commands::ChangeChannelByNumber::Type request; @@ -19095,12 +18996,10 @@ new MTRCommandSuccessCallbackBridge( request.majorNumber = params.majorNumber.unsignedShortValue; request.minorNumber = params.minorNumber.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19130,13 +19029,14 @@ - (void)skipChannelWithParams:(MTRChannelClusterSkipChannelParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; Channel::Commands::SkipChannel::Type request; @@ -19145,12 +19045,10 @@ new MTRCommandSuccessCallbackBridge( } request.count = params.count.unsignedShortValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19302,8 +19200,10 @@ - (void)navigateTargetWithParams:(MTRTargetNavigatorClusterNavigateTargetParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TargetNavigatorClusterNavigateTargetResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TargetNavigator::Commands::NavigateTarget::Type request; @@ -19316,12 +19216,10 @@ new MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(self.callbackQ definedValue_0 = [self asCharSpan:params.data]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19452,8 +19350,10 @@ - (void)playWithParams:(MTRMediaPlaybackClusterPlayParams * _Nullable)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Play::Type request; @@ -19461,12 +19361,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, ba timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19504,8 +19402,10 @@ - (void)pauseWithParams:(MTRMediaPlaybackClusterPauseParams * _Nullable)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Pause::Type request; @@ -19513,12 +19413,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, ba timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19559,8 +19457,10 @@ - (void)stopPlaybackWithParams:(MTRMediaPlaybackClusterStopPlaybackParams * _Nul MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::StopPlayback::Type request; @@ -19568,12 +19468,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, ba timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19614,8 +19512,10 @@ - (void)startOverWithParams:(MTRMediaPlaybackClusterStartOverParams * _Nullable) MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::StartOver::Type request; @@ -19623,12 +19523,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, ba timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19666,8 +19564,10 @@ - (void)previousWithParams:(MTRMediaPlaybackClusterPreviousParams * _Nullable)pa MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Previous::Type request; @@ -19675,12 +19575,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, ba timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19718,8 +19616,10 @@ - (void)nextWithParams:(MTRMediaPlaybackClusterNextParams * _Nullable)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Next::Type request; @@ -19727,12 +19627,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, ba timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19770,8 +19668,10 @@ - (void)rewindWithParams:(MTRMediaPlaybackClusterRewindParams * _Nullable)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Rewind::Type request; @@ -19779,12 +19679,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, ba timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19825,8 +19723,10 @@ - (void)fastForwardWithParams:(MTRMediaPlaybackClusterFastForwardParams * _Nulla MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::FastForward::Type request; @@ -19834,12 +19734,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, ba timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19870,8 +19768,10 @@ - (void)skipForwardWithParams:(MTRMediaPlaybackClusterSkipForwardParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::SkipForward::Type request; @@ -19880,12 +19780,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, ba } request.deltaPositionMilliseconds = params.deltaPositionMilliseconds.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19916,8 +19814,10 @@ - (void)skipBackwardWithParams:(MTRMediaPlaybackClusterSkipBackwardParams *)para MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::SkipBackward::Type request; @@ -19926,12 +19826,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, ba } request.deltaPositionMilliseconds = params.deltaPositionMilliseconds.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -19962,8 +19860,10 @@ - (void)seekWithParams:(MTRMediaPlaybackClusterSeekParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaPlayback::Commands::Seek::Type request; @@ -19972,12 +19872,10 @@ new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, ba } request.position = params.position.unsignedLongLongValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -20306,13 +20204,14 @@ - (void)selectInputWithParams:(MTRMediaInputClusterSelectInputParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaInput::Commands::SelectInput::Type request; @@ -20321,12 +20220,10 @@ new MTRCommandSuccessCallbackBridge( } request.index = params.index.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -20365,13 +20262,14 @@ - (void)showInputStatusWithParams:(MTRMediaInputClusterShowInputStatusParams * _ MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaInput::Commands::ShowInputStatus::Type request; @@ -20379,12 +20277,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -20423,13 +20319,14 @@ - (void)hideInputStatusWithParams:(MTRMediaInputClusterHideInputStatusParams * _ MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaInput::Commands::HideInputStatus::Type request; @@ -20437,12 +20334,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -20472,13 +20367,14 @@ - (void)renameInputWithParams:(MTRMediaInputClusterRenameInputParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; MediaInput::Commands::RenameInput::Type request; @@ -20488,12 +20384,10 @@ new MTRCommandSuccessCallbackBridge( request.index = params.index.unsignedCharValue; request.name = [self asCharSpan:params.name]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -20667,13 +20561,14 @@ - (void)sleepWithParams:(MTRLowPowerClusterSleepParams * _Nullable)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; LowPower::Commands::Sleep::Type request; @@ -20681,12 +20576,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -20799,8 +20692,10 @@ - (void)sendKeyWithParams:(MTRKeypadInputClusterSendKeyParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRKeypadInputClusterSendKeyResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRKeypadInputClusterSendKeyResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + KeypadInputClusterSendKeyResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; KeypadInput::Commands::SendKey::Type request; @@ -20809,12 +20704,10 @@ new MTRKeypadInputClusterSendKeyResponseCallbackBridge(self.callbackQueue, baseD } request.keyCode = static_cast>(params.keyCode.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -20922,8 +20815,10 @@ - (void)launchContentWithParams:(MTRContentLauncherClusterLaunchContentParams *) MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherClusterLaunchResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ContentLauncher::Commands::LaunchContent::Type request; @@ -20989,12 +20884,10 @@ new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, ba definedValue_0 = [self asCharSpan:params.data]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -21025,8 +20918,10 @@ - (void)launchURLWithParams:(MTRContentLauncherClusterLaunchURLParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ContentLauncherClusterLaunchResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ContentLauncher::Commands::LaunchURL::Type request; @@ -21133,12 +21028,10 @@ new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, ba } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -21293,13 +21186,14 @@ - (void)selectOutputWithParams:(MTRAudioOutputClusterSelectOutputParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AudioOutput::Commands::SelectOutput::Type request; @@ -21308,12 +21202,10 @@ new MTRCommandSuccessCallbackBridge( } request.index = params.index.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -21343,13 +21235,14 @@ - (void)renameOutputWithParams:(MTRAudioOutputClusterRenameOutputParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AudioOutput::Commands::RenameOutput::Type request; @@ -21359,12 +21252,10 @@ new MTRCommandSuccessCallbackBridge( request.index = params.index.unsignedCharValue; request.name = [self asCharSpan:params.name]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -21497,8 +21388,10 @@ - (void)launchAppWithParams:(MTRApplicationLauncherClusterLaunchAppParams *)para MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ApplicationLauncher::Commands::LaunchApp::Type request; @@ -21512,12 +21405,10 @@ new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQue definedValue_0 = [self asByteSpan:params.data]; } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -21548,8 +21439,10 @@ - (void)stopAppWithParams:(MTRApplicationLauncherClusterStopAppParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ApplicationLauncher::Commands::StopApp::Type request; @@ -21559,12 +21452,10 @@ new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQue request.application.catalogVendorId = params.application.catalogVendorId.unsignedShortValue; request.application.applicationId = [self asCharSpan:params.application.applicationId]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -21595,8 +21486,10 @@ - (void)hideAppWithParams:(MTRApplicationLauncherClusterHideAppParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ApplicationLauncher::Commands::HideApp::Type request; @@ -21606,12 +21499,10 @@ new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQue request.application.catalogVendorId = params.application.catalogVendorId.unsignedShortValue; request.application.applicationId = [self asCharSpan:params.application.applicationId]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -21906,8 +21797,10 @@ - (void)getSetupPINWithParams:(MTRAccountLoginClusterGetSetupPINParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + AccountLoginClusterGetSetupPINResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AccountLogin::Commands::GetSetupPIN::Type request; @@ -21919,12 +21812,10 @@ new MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(self.callbackQueue, } request.tempAccountIdentifier = [self asCharSpan:params.tempAccountIdentifier]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -21954,13 +21845,14 @@ - (void)loginWithParams:(MTRAccountLoginClusterLoginParams *)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AccountLogin::Commands::Login::Type request; @@ -21973,12 +21865,10 @@ new MTRCommandSuccessCallbackBridge( request.tempAccountIdentifier = [self asCharSpan:params.tempAccountIdentifier]; request.setupPIN = [self asCharSpan:params.setupPIN]; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -22014,13 +21904,14 @@ - (void)logoutWithParams:(MTRAccountLoginClusterLogoutParams * _Nullable)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; AccountLogin::Commands::Logout::Type request; @@ -22031,12 +21922,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(10000); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -22178,13 +22067,14 @@ - (void)getProfileInfoCommandWithParams:(MTRElectricalMeasurementClusterGetProfi MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ElectricalMeasurement::Commands::GetProfileInfoCommand::Type request; @@ -22192,12 +22082,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -22227,13 +22115,14 @@ - (void)getMeasurementProfileCommandWithParams:(MTRElectricalMeasurementClusterG MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; ElectricalMeasurement::Commands::GetMeasurementProfileCommand::Type request; @@ -22244,12 +22133,10 @@ new MTRCommandSuccessCallbackBridge( request.startTime = params.startTime.unsignedIntValue; request.numberOfIntervals = params.numberOfIntervals.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -23567,13 +23454,14 @@ - (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::Test::Type request; @@ -23581,12 +23469,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -23625,13 +23511,14 @@ - (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _N MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestNotHandled::Type request; @@ -23639,12 +23526,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -23685,8 +23570,10 @@ - (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nulla MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterTestSpecificResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestSpecificResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestSpecificResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestSpecific::Type request; @@ -23694,12 +23581,10 @@ new MTRTestClusterClusterTestSpecificResponseCallbackBridge(self.callbackQueue, timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -23738,13 +23623,14 @@ - (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandPar MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestUnknownCommand::Type request; @@ -23752,12 +23638,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -23788,8 +23672,10 @@ - (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestAddArgumentsResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestAddArguments::Type request; @@ -23799,12 +23685,10 @@ new MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(self.callbackQue request.arg1 = params.arg1.unsignedCharValue; request.arg2 = params.arg2.unsignedCharValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -23835,8 +23719,10 @@ - (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgu MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestSimpleArgumentResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestSimpleArgumentRequest::Type request; @@ -23845,12 +23731,10 @@ new MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(self.callbackQ } request.arg1 = params.arg1.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -23882,8 +23766,10 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestStructArrayArgumentResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestStructArrayArgumentRequest::Type request; @@ -24103,12 +23989,10 @@ new MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(self.call request.arg5 = static_cast>(params.arg5.unsignedCharValue); request.arg6 = params.arg6.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -24139,8 +24023,10 @@ - (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgu MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestStructArgumentRequest::Type request; @@ -24156,12 +24042,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseD request.arg1.g = params.arg1.g.floatValue; request.arg1.h = params.arg1.h.doubleValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -24192,8 +24076,10 @@ - (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNest MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestNestedStructArgumentRequest::Type request; @@ -24213,12 +24099,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseD request.arg1.c.g = params.arg1.c.g.floatValue; request.arg1.c.h = params.arg1.c.h.doubleValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -24249,8 +24133,10 @@ - (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListSt MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestListStructArgumentRequest::Type request; @@ -24289,12 +24175,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseD } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -24325,8 +24209,10 @@ - (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestListInt8UArgumentRequest::Type request; @@ -24356,12 +24242,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseD } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -24392,8 +24276,10 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTest MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestNestedStructListArgumentRequest::Type request; @@ -24510,12 +24396,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseD } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -24547,8 +24431,10 @@ - (void)testListNestedStructListArgumentRequestWithParams: MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestListNestedStructListArgumentRequest::Type request; @@ -24690,12 +24576,10 @@ new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, baseD } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -24726,8 +24610,10 @@ - (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8 MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestListInt8UReverseResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestListInt8UReverseRequest::Type request; @@ -24757,12 +24643,10 @@ new MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(self.callbac } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -24793,8 +24677,10 @@ - (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterTestEnumsResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestEnumsResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestEnumsResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestEnumsRequest::Type request; @@ -24804,12 +24690,10 @@ new MTRTestClusterClusterTestEnumsResponseCallbackBridge(self.callbackQueue, bas request.arg1 = static_cast>(params.arg1.unsignedShortValue); request.arg2 = static_cast>(params.arg2.unsignedCharValue); - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -24840,8 +24724,10 @@ - (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullable MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestNullableOptionalRequest::Type request; @@ -24860,12 +24746,10 @@ new MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(self.callbac } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -24898,8 +24782,10 @@ - (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestC MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestComplexNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestComplexNullableOptionalRequest::Type request; @@ -25077,13 +24963,10 @@ new MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(self. } } - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -25114,8 +24997,10 @@ - (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEcho MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterSimpleStructResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterSimpleStructResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterSimpleStructResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::SimpleStructEchoRequest::Type request; @@ -25131,12 +25016,10 @@ new MTRTestClusterClusterSimpleStructResponseCallbackBridge(self.callbackQueue, request.arg1.g = params.arg1.g.floatValue; request.arg1.h = params.arg1.h.doubleValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -25175,13 +25058,14 @@ - (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestPar MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TimedInvokeRequest::Type request; @@ -25192,12 +25076,10 @@ new MTRCommandSuccessCallbackBridge( timedInvokeTimeoutMs.SetValue(10000); } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -25227,13 +25109,14 @@ - (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSi MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRCommandSuccessCallbackBridge( - self.callbackQueue, baseDevice, + auto * bridge = new MTRCommandSuccessCallbackBridge( + self.callbackQueue, ^(id _Nullable value, NSError * _Nullable error) { completion(error); [workItem endWork]; }, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb, + MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestSimpleOptionalArgumentRequest::Type request; @@ -25247,12 +25130,10 @@ new MTRCommandSuccessCallbackBridge( } } - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -25283,8 +25164,10 @@ - (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEve MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestEmitTestEventResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestEmitTestEventRequest::Type request; @@ -25295,12 +25178,10 @@ new MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(self.callbackQu request.arg2 = static_cast>(params.arg2.unsignedCharValue); request.arg3 = params.arg3.boolValue; - auto successFn = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem]; @@ -25334,8 +25215,10 @@ new MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(self.callbackQu MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) { MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; - new MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(self.callbackQueue, baseDevice, completion, - ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + auto * bridge = new MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(self.callbackQueue, completion, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, + TestClusterClusterTestEmitTestFabricScopedEventResponseCallbackType successCb, MTRErrorCallback failureCb, + MTRCallbackBridgeBase * bridge) { chip::Optional timedInvokeTimeoutMs; ListFreer listFreer; TestCluster::Commands::TestEmitTestFabricScopedEventRequest::Type request; @@ -25344,13 +25227,10 @@ new MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(sel } request.arg1 = params.arg1.unsignedCharValue; - auto successFn - = Callback::FromCancelable(success); - auto failureFn = Callback::FromCancelable(failure); chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint); - return cppCluster.InvokeCommand( - request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs); }); + std::move(*bridge).DispatchAction(baseDevice); }; workItem.readyHandler = readyHandler; [self.device.asyncCallbackWorkQueue enqueueWorkItem:workItem];